From 5cf7ba96d68fa76a7461ac67c375bbfca6acd545 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 13:58:10 -0800 Subject: [PATCH 01/20] initial workflow --- .github/workflows/a11y.yml | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/a11y.yml diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml new file mode 100644 index 0000000..ad896ab --- /dev/null +++ b/.github/workflows/a11y.yml @@ -0,0 +1,57 @@ +name: Accessibility Checks + +on: + push: + branches: + - main + pull_request: + +jobs: + axe-check: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + cache: 'pip' + + - name: Install Python dependencies + run: pip install -r dev-requirements.txt + + - name: Build Jupyter Book + run: jupyter-book build --html + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install Axe CLI and HTTP Server + run: npm install -g @axe-core/cli http-server + + - name: Run Axe Checks + run: | + # A. Start a local server in the background + npx http-server ./_build/html -p 8080 -s & + sleep 5 + + # B. Generate the URL list from the actual build artifacts + cd _build/html + URLS=$(find . -name "*.html" -not -path "*/build/*" | sed 's|^\./||' | sed 's|^|http://localhost:8080/|' | tr '\n' ' ') + + # C. Run Axe CLI on the discovered URLs + axe $URLS \ + --tags wcag2a,wcag2aa,wcag21a,wcag21aa \ + --save axe-report.json \ + --exit + + - name: Upload Accessibility Report + if: always() + uses: actions/upload-artifact@v4 + with: + name: axe-report + path: _build/html/axe-report.json \ No newline at end of file From e3f2e52cebf631aa414f5246d6b67cfd5a0f6eb8 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:02:30 -0800 Subject: [PATCH 02/20] branches and python version --- .github/workflows/a11y.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index ad896ab..418c868 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -3,7 +3,7 @@ name: Accessibility Checks on: push: branches: - - main + - master pull_request: jobs: @@ -16,7 +16,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.11' + python-version: '3.10' cache: 'pip' - name: Install Python dependencies From adac26ee2505340cbc8319ee19e9d3bbcc8a6d98 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:07:14 -0800 Subject: [PATCH 03/20] only node installs --- .github/workflows/a11y.yml | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 418c868..6a9cc98 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -13,25 +13,16 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - cache: 'pip' - - - name: Install Python dependencies - run: pip install -r dev-requirements.txt - - - name: Build Jupyter Book - run: jupyter-book build --html - - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - - name: Install Axe CLI and HTTP Server - run: npm install -g @axe-core/cli http-server + - name: Install Jupyter Book, Axe CLI, and HTTP Server + run: npm install -g jupyter-book @axe-core/cli http-server + + - name: Build Jupyter Book + run: jupyter-book build --html - name: Run Axe Checks run: | From 81b0df8213a4f2ceefee8d356f5cbb01038befbe Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:08:49 -0800 Subject: [PATCH 04/20] remove unnecessary --- myst.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/myst.yml b/myst.yml index b2a5f5c..6e6d9a0 100644 --- a/myst.yml +++ b/myst.yml @@ -84,9 +84,4 @@ site: favicon: content/images/favicon.ico folders: true hide_authors: true - template: book-theme -sphinx: - config: - # This overrides the default theme (Sphinx Book Theme) - # to use your custom theme. - html_theme: quantecon_book_theme + template: book-theme \ No newline at end of file From 4dc9b303678be7b60ffeea9f10df7c3dcd66c8c0 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:12:00 -0800 Subject: [PATCH 05/20] fix chromedriver --- .github/workflows/a11y.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 6a9cc98..ba2b1f1 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -20,6 +20,9 @@ jobs: - name: Install Jupyter Book, Axe CLI, and HTTP Server run: npm install -g jupyter-book @axe-core/cli http-server + + - name: Install Matching ChromeDriver + run: npx browser-driver-manager install chrome - name: Build Jupyter Book run: jupyter-book build --html From d77ce1415cce1de7d6ac1873b05b945365acf17b Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:16:21 -0800 Subject: [PATCH 06/20] increase timeout --- .github/workflows/a11y.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index ba2b1f1..6039d73 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -40,6 +40,7 @@ jobs: # C. Run Axe CLI on the discovered URLs axe $URLS \ --tags wcag2a,wcag2aa,wcag21a,wcag21aa \ + --timeout 5000 \ --save axe-report.json \ --exit From 4823604587f72d889c45f445962d7b88de0634a9 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:19:40 -0800 Subject: [PATCH 07/20] address timeout differently --- .github/workflows/a11y.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 6039d73..21bb3c8 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -40,7 +40,7 @@ jobs: # C. Run Axe CLI on the discovered URLs axe $URLS \ --tags wcag2a,wcag2aa,wcag21a,wcag21aa \ - --timeout 5000 \ + --webdriver-options '{"pageLoadTimeout": 20000}' \ --save axe-report.json \ --exit From 472b9ed2a0845ceb0f9ec73ea6ca396f46f07c9e Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:23:40 -0800 Subject: [PATCH 08/20] another try at timeouts --- .github/workflows/a11y.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 21bb3c8..00150d2 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -21,7 +21,7 @@ jobs: - name: Install Jupyter Book, Axe CLI, and HTTP Server run: npm install -g jupyter-book @axe-core/cli http-server - - name: Install Matching ChromeDriver + - name: Install Matching ChromeDriver for Node v20 run: npx browser-driver-manager install chrome - name: Build Jupyter Book @@ -40,7 +40,8 @@ jobs: # C. Run Axe CLI on the discovered URLs axe $URLS \ --tags wcag2a,wcag2aa,wcag21a,wcag21aa \ - --webdriver-options '{"pageLoadTimeout": 20000}' \ + --timeout 30000 \ + --browser-options '--disable-dev-shm-usage --no-sandbox' \ --save axe-report.json \ --exit From 4b97d6f6f37a2ea43d392a0589277d79644d6087 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:25:35 -0800 Subject: [PATCH 09/20] try changing node version instead --- .github/workflows/a11y.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 00150d2..30f0bfa 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -16,13 +16,13 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '18' - name: Install Jupyter Book, Axe CLI, and HTTP Server run: npm install -g jupyter-book @axe-core/cli http-server - - name: Install Matching ChromeDriver for Node v20 - run: npx browser-driver-manager install chrome + # - name: Install Matching ChromeDriver for Node v20 + # run: npx browser-driver-manager install chrome - name: Build Jupyter Book run: jupyter-book build --html @@ -40,8 +40,6 @@ jobs: # C. Run Axe CLI on the discovered URLs axe $URLS \ --tags wcag2a,wcag2aa,wcag21a,wcag21aa \ - --timeout 30000 \ - --browser-options '--disable-dev-shm-usage --no-sandbox' \ --save axe-report.json \ --exit From 1f6f7ff124b76e11e9c4e252f4577c2f7f1d7dd4 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:28:31 -0800 Subject: [PATCH 10/20] bump node back to 20 --- .github/workflows/a11y.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 30f0bfa..0f34c79 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' - name: Install Jupyter Book, Axe CLI, and HTTP Server run: npm install -g jupyter-book @axe-core/cli http-server From 6a526e034628c688cafa67817d333bdd71d6c783 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:32:45 -0800 Subject: [PATCH 11/20] add back chromedriver install --- .github/workflows/a11y.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 0f34c79..2bc3a82 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -21,8 +21,8 @@ jobs: - name: Install Jupyter Book, Axe CLI, and HTTP Server run: npm install -g jupyter-book @axe-core/cli http-server - # - name: Install Matching ChromeDriver for Node v20 - # run: npx browser-driver-manager install chrome + - name: Install Matching ChromeDriver for Node v20 + run: npx browser-driver-manager install chrome - name: Build Jupyter Book run: jupyter-book build --html From 4a4ef486f7e2703c3acc24e9ece272f9abbf5cce Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:44:32 -0800 Subject: [PATCH 12/20] chrome options --- .github/workflows/a11y.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 2bc3a82..59e443d 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -21,7 +21,7 @@ jobs: - name: Install Jupyter Book, Axe CLI, and HTTP Server run: npm install -g jupyter-book @axe-core/cli http-server - - name: Install Matching ChromeDriver for Node v20 + - name: Install Matching ChromeDriver for Axe run: npx browser-driver-manager install chrome - name: Build Jupyter Book @@ -40,6 +40,7 @@ jobs: # C. Run Axe CLI on the discovered URLs axe $URLS \ --tags wcag2a,wcag2aa,wcag21a,wcag21aa \ + --chrome-options "no-sandbox,disable-dev-shm-usage,disable-gpu,headless=new" --save axe-report.json \ --exit From ef25da834f6a50a582bef97d02f8fe3e68d7040c Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 14:56:37 -0800 Subject: [PATCH 13/20] custom script --- .github/workflows/a11y.yml | 12 +++---- axe-scan.js | 73 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 axe-scan.js diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 59e443d..4773a2d 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -19,7 +19,7 @@ jobs: node-version: '20' - name: Install Jupyter Book, Axe CLI, and HTTP Server - run: npm install -g jupyter-book @axe-core/cli http-server + run: npm install -g jupyter-book selenium-webdriver @axe-core/webdriverjs chromedriver http-server wait-on - name: Install Matching ChromeDriver for Axe run: npx browser-driver-manager install chrome @@ -31,18 +31,14 @@ jobs: run: | # A. Start a local server in the background npx http-server ./_build/html -p 8080 -s & - sleep 5 + npx wait-on http://localhost:8080 # B. Generate the URL list from the actual build artifacts cd _build/html URLS=$(find . -name "*.html" -not -path "*/build/*" | sed 's|^\./||' | sed 's|^|http://localhost:8080/|' | tr '\n' ' ') - # C. Run Axe CLI on the discovered URLs - axe $URLS \ - --tags wcag2a,wcag2aa,wcag21a,wcag21aa \ - --chrome-options "no-sandbox,disable-dev-shm-usage,disable-gpu,headless=new" - --save axe-report.json \ - --exit + # C. Run custom script + node axe-scan.js $URLS - name: Upload Accessibility Report if: always() diff --git a/axe-scan.js b/axe-scan.js new file mode 100644 index 0000000..4767a00 --- /dev/null +++ b/axe-scan.js @@ -0,0 +1,73 @@ +const { Builder } = require('selenium-webdriver'); +const chrome = require('selenium-webdriver/chrome'); +const AxeBuilder = require('@axe-core/webdriverjs'); +const fs = require('fs'); + +// Get URLs from command line args +const urls = process.argv.slice(2); + +(async function scan() { + const options = new chrome.Options(); + options.addArguments('--headless=new'); + options.addArguments('--no-sandbox'); + options.addArguments('--disable-dev-shm-usage'); + options.addArguments('--disable-gpu'); + + // Initialize Driver + const driver = await new Builder() + .forBrowser('chrome') + .setChromeOptions(options) + .build(); + + const fullReport = []; + let hasErrors = false; + + try { + // Set a very generous timeout for page loads (3 minutes) + await driver.manage().setTimeouts({ pageLoad: 180000, script: 180000 }); + + for (const url of urls) { + console.log(`Testing ${url} ...`); + + try { + await driver.get(url); + + // Run Axe analysis + const results = await new AxeBuilder(driver) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']) + .analyze(); + + if (results.violations.length > 0) { + console.log(` FAILED: ${results.violations.length} violations found.`); + fullReport.push({ + url: url, + violations: results.violations + }); + hasErrors = true; + } else { + console.log(` PASSED`); + } + + } catch (e) { + console.error(` CRASHED: Could not scan ${url}. Skipping.`); + console.error(` Reason: ${e.message}`); + fullReport.push({ + url: url, + error: "Browser crashed or timed out on this page", + details: e.message + }); + hasErrors = true; + } + } + + fs.writeFileSync('axe-report.json', JSON.stringify(fullReport, null, 2)); + console.log('Report saved to axe-report.json'); + + } finally { + await driver.quit(); + } + + if (hasErrors) { + process.exit(1); + } +})(); \ No newline at end of file From 87212cc9d6c679c1852b1e65ddca1cd5bf0c3741 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:00:49 -0800 Subject: [PATCH 14/20] fix where command is run --- .github/workflows/a11y.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 4773a2d..07dc303 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -36,7 +36,8 @@ jobs: # B. Generate the URL list from the actual build artifacts cd _build/html URLS=$(find . -name "*.html" -not -path "*/build/*" | sed 's|^\./||' | sed 's|^|http://localhost:8080/|' | tr '\n' ' ') - + cd ../.. + # C. Run custom script node axe-scan.js $URLS From 8d94d1b2ec983b0029f28fc272e133b8b5b4349b Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:05:30 -0800 Subject: [PATCH 15/20] remove global installation --- .github/workflows/a11y.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 07dc303..1d3aa84 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -19,10 +19,10 @@ jobs: node-version: '20' - name: Install Jupyter Book, Axe CLI, and HTTP Server - run: npm install -g jupyter-book selenium-webdriver @axe-core/webdriverjs chromedriver http-server wait-on + run: npm install jupyter-book selenium-webdriver @axe-core/webdriverjs chromedriver http-server wait-on - - name: Install Matching ChromeDriver for Axe - run: npx browser-driver-manager install chrome + # - name: Install Matching ChromeDriver for Axe + # run: npx browser-driver-manager install chrome - name: Build Jupyter Book run: jupyter-book build --html From b3832bdba20c508c6acd155269af8bebd3cf9098 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:08:41 -0800 Subject: [PATCH 16/20] access jb command correctly --- .github/workflows/a11y.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 1d3aa84..42a2eda 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -25,7 +25,7 @@ jobs: # run: npx browser-driver-manager install chrome - name: Build Jupyter Book - run: jupyter-book build --html + run: npx jupyter-book build --html - name: Run Axe Checks run: | From cabc2a9567505831c10ac70405faf12c26198c43 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:17:33 -0800 Subject: [PATCH 17/20] verbose output --- .github/workflows/a11y.yml | 5 +---- axe-scan.js | 26 +++++++++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 42a2eda..81650cf 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -18,11 +18,8 @@ jobs: with: node-version: '20' - - name: Install Jupyter Book, Axe CLI, and HTTP Server + - name: Installs run: npm install jupyter-book selenium-webdriver @axe-core/webdriverjs chromedriver http-server wait-on - - # - name: Install Matching ChromeDriver for Axe - # run: npx browser-driver-manager install chrome - name: Build Jupyter Book run: npx jupyter-book build --html diff --git a/axe-scan.js b/axe-scan.js index 4767a00..676ba1b 100644 --- a/axe-scan.js +++ b/axe-scan.js @@ -5,6 +5,7 @@ const fs = require('fs'); // Get URLs from command line args const urls = process.argv.slice(2); +console.log(`\nStarting Axe scan on ${urls.length} pages...\n`); (async function scan() { const options = new chrome.Options(); @@ -26,28 +27,38 @@ const urls = process.argv.slice(2); // Set a very generous timeout for page loads (3 minutes) await driver.manage().setTimeouts({ pageLoad: 180000, script: 180000 }); - for (const url of urls) { - console.log(`Testing ${url} ...`); - + for (let i = 0; i < urls.length; i++) { + const url = urls[i]; + console.log(`[${i + 1}/${urls.length}] Testing ${url} ...`); + try { await driver.get(url); - // Run Axe analysis const results = await new AxeBuilder(driver) .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']) .analyze(); if (results.violations.length > 0) { console.log(` FAILED: ${results.violations.length} violations found.`); + results.violations.forEach((violation) => { + console.log(` [${violation.impact.toUpperCase()}] ${violation.id}: ${violation.help}`); + console.log(` Help URL: ${violation.helpUrl}`); + + violation.nodes.forEach((node) => { + console.log(` - Selector: ${node.target.join(' ')}`); + }); + console.log(''); // Empty line for readability + }); + fullReport.push({ url: url, violations: results.violations }); - hasErrors = true; + hasErrors = true; } else { console.log(` PASSED`); } - + } catch (e) { console.error(` CRASHED: Could not scan ${url}. Skipping.`); console.error(` Reason: ${e.message}`); @@ -60,8 +71,9 @@ const urls = process.argv.slice(2); } } + // Save JSON report fs.writeFileSync('axe-report.json', JSON.stringify(fullReport, null, 2)); - console.log('Report saved to axe-report.json'); + console.log('\nReport saved to axe-report.json'); } finally { await driver.quit(); From 9862fe957f0a8e97a786ceba21ad47138f892b2d Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:21:41 -0800 Subject: [PATCH 18/20] fix report path --- .github/workflows/a11y.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/a11y.yml b/.github/workflows/a11y.yml index 81650cf..47e04e1 100644 --- a/.github/workflows/a11y.yml +++ b/.github/workflows/a11y.yml @@ -43,4 +43,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: axe-report - path: _build/html/axe-report.json \ No newline at end of file + path: axe-report.json \ No newline at end of file From df023be477151ba524a2df58364ecf5c8a28c463 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:23:36 -0800 Subject: [PATCH 19/20] badges --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4e389d3..9aac8b6 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ -# textbook -Textbook for Data 88E: Economic Models at UC Berkeley +# Textbook for Data 88E: Economic Models at UC Berkeley -Content is stored in the content folder. Order of textbook can be changed from _toc.yml file. +[![Jupyter Book (via myst) GitHub Pages Deploy](https://github.com/data-88e/textbook/actions/workflows/deploy.yml/badge.svg)](https://github.com/data-88e/textbook/actions/workflows/deploy.yml) [![Accessibility Checks](https://github.com/data-88e/textbook/actions/workflows/a11y.yml/badge.svg)](https://github.com/data-88e/textbook/actions/workflows/a11y.yml) + +Content is stored in the content folder. Order of textbook can be changed from the `myst.yml` file. To build the textbook, run ``` jupyter-book build . ``` -This will output HTML to `_build/html`, which can be copied to `docs` in order to be served on GitHub Pages. +This will output HTML to `_build/html`. # NOTE: Chapter 4 - shifts.ipynb From b2cca060a03ea909301aaa38020c51b9370de3c6 Mon Sep 17 00:00:00 2001 From: Silas Santini <70163606+pancakereport@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:27:05 -0800 Subject: [PATCH 20/20] additional options --- axe-scan.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/axe-scan.js b/axe-scan.js index 676ba1b..f0feddb 100644 --- a/axe-scan.js +++ b/axe-scan.js @@ -13,6 +13,11 @@ console.log(`\nStarting Axe scan on ${urls.length} pages...\n`); options.addArguments('--no-sandbox'); options.addArguments('--disable-dev-shm-usage'); options.addArguments('--disable-gpu'); + // see if these help with the production/shifts page crashing + options.addArguments('--window-size=1920,1080'); + options.addArguments('--disable-extensions'); + options.addArguments('--disable-infobars'); + options.addArguments('--disable-software-rasterizer'); // Initialize Driver const driver = await new Builder()