Apify & CrawleeA&CApify & Crawlee
Powered by
sour-pinkS
Apify & Crawlee•4y ago•
13 replies
sour-pink

Injecting Axe a11y tester

I would like to use Crawlee to crawl a bunch of internal sites and run the Axe accessibility scanner on each page. I figured out how to inject the script they reference in their getting started docs (https://github.com/dequelabs/axe-core#getting-started) using the
page.addInitScript
page.addInitScript
.

import { PlaywrightCrawler, Dataset } from 'crawlee';
import axe from 'axe-core';

const crawler = new PlaywrightCrawler({
    async requestHandler({ request, page, enqueueLinks, log }) {
        await page.addInitScript('./node_modules/axe-core/axe-min.js');

        const title = await page.title();
        log.info(`Title of ${request.loadedUrl} is '${title}'`);

        const results = await axe.run();
        console.log(results.violations)

        await Dataset.pushData({ title, url: request.loadedUrl });

        await enqueueLinks();
    },
});

await crawler.run(['https://dequeuniversity.com/demo/mars/']);
import { PlaywrightCrawler, Dataset } from 'crawlee';
import axe from 'axe-core';

const crawler = new PlaywrightCrawler({
    async requestHandler({ request, page, enqueueLinks, log }) {
        await page.addInitScript('./node_modules/axe-core/axe-min.js');

        const title = await page.title();
        log.info(`Title of ${request.loadedUrl} is '${title}'`);

        const results = await axe.run();
        console.log(results.violations)

        await Dataset.pushData({ title, url: request.loadedUrl });

        await enqueueLinks();
    },
});

await crawler.run(['https://dequeuniversity.com/demo/mars/']);

But every page after that throws this error.

INFO PlaywrightCrawler: Starting the crawl
INFO PlaywrightCrawler: Title of https://dequeuniversity.com/demo/mars/ is 'Mars Commuter: Travel to Mars for Work or Pleasure!'
WARN PlaywrightCrawler: Reclaiming failed request back to the list or queue. Required "window" or "document" globals not defined and cannot be deduced from the context. Either set the globals before running or pass in a valid Element. {"id":"9syPc5JbUuAjPx1","url":"https://dequeuniversity.com/demo/mars/","retryCount":1}

If I comment out the call to axe.run() the error goes away and things 'work'.

Any idea what could be causing this?
Mars Commuter: Travel to Mars for Work or Pleasure!
MarsCommuter - Your gateway to the Red Planet
GitHub
GitHub - dequelabs/axe-core: Accessibility engine for automated Web...
Accessibility engine for automated Web UI testing. Contribute to dequelabs/axe-core development by creating an account on GitHub.
GitHub - dequelabs/axe-core: Accessibility engine for automated Web...
Apify & Crawlee banner
Apify & CrawleeJoin
This is the official developer community of Apify and Crawlee.
14,091Members
Resources
Recent Announcements

Similar Threads

Was this page helpful?
Recent Announcements
ellativity

**Update to Store Publishing Terms and Acceptable Use Policy** Due to an influx of fraudulent reviews recently, Apify's Legal team has taken some actions to protect developers, customers, and Apify, by updating the Store Publishing Terms and Acceptable Use Policy. Please pay special attention to the updated terms in section 4 of the Store Publishing Terms here: https://docs.apify.com/legal/store-publishing-terms-and-conditions Additionally, please review the changes to section 2 of the Acceptable Use Policy here: https://docs.apify.com/legal/acceptable-use-policy If you have any questions, please ask them in <#1206131794261315594> so everyone can see the discussion. Thanks!

ellativity · 3w ago

ellativity

Hi @everyone I'm hanging out with the Creator team at Apify in https://discord.com/channels/801163717915574323/1430491198145167371 if you want to discuss Analytics and Insights!

ellativity · 4w ago

ellativity

2 things for <@&1092713625141137429> members today: 1. The Apify developer rewards program is open for registrations: https://apify.notion.site/developer-rewards This is the program where you will earn points for marketing activities. The rewards are still TBC, but the real purpose of the program is to help you structure your marketing activities and efforts. In the coming weeks, I will be populating that link with guides to help you identify the best ways to market your Actors, as well as scheduling workshops and office hours to help you create content and develop your own marketing strategy. 2. At 2PM CET (in about 80 minutes) there will be an office hour with the team behind Insights and Analytics, who want your feedback on how to improve analytics for you. Join us in https://discord.com/channels/801163717915574323/1430491198145167371 to share your ideas!

ellativity · 4w ago

Similar Threads

PlayWrightCrawler new request results are bleeding into old requests. RequestQueue issue?
cryptorexCcryptorex / crawlee-js
4y ago
How to "store" and "retrieve" a browser on a per user basis?
brilliant-limeBbrilliant-lime / crawlee-js
2y ago
Saving fingerprints and cookies in database
popular-magentaPpopular-magenta / crawlee-js
4y ago