diff --git a/.github/workflows/check_a11y_docs.yml b/.github/workflows/check_a11y_docs.yml new file mode 100644 index 00000000..6553dc98 --- /dev/null +++ b/.github/workflows/check_a11y_docs.yml @@ -0,0 +1,59 @@ +name: check a11y docs + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + a11y: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + cache: 'pip' + + - name: Set up Chrome + id: setup-chrome + uses: browser-actions/setup-chrome@v1 + with: + install-chromedriver: true + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install '.[dev]' + # install ChromeDriver + npx browser-driver-manager install chrome + # copy chromedriver path to ENV variable + echo "CHROMEDRIVER-PATH=$CHROMEDRIVER_TEST_PATH" >> $GITHUB_ENV + + - name: Build public documentation + run: | + export DB_URI="sqlite:///:memory:" + export INITIAL_ALGORITHMS="" + export VERSION=${{ env.NEXT_TAG }} + ./scripts/build_docs.sh _site + + - name: Serve documentation + run: | + # run npx serve in the background to serve the _site directory + npx serve _site & npx wait-on http://localhost:3000 + + - name: Run accessibility checks + run: | + npm install -g @axe-core/cli + # for every recursively nested *.html file in _site, run a11y checks + for file in $(find _site -name '*.html'); do + path=${file#_site/} + echo "path to check: ${path}" + echo "driver path: ${{ env.CHROMEDRIVER-PATH }}" + axe --exit --tags wcag2aa --load-delay 1500 http://127.0.0.1:3000/$path + done diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 52f8ccd8..74505649 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -1,4 +1,5 @@ site_name: !ENV [SITE_NAME, 'RecordLinker Documentation'] +site_url: !ENV [SITE_URL, 'http://localhost:3000'] theme: name: "material" icon: diff --git a/scripts/build_docs.sh b/scripts/build_docs.sh index 609e7765..08a879e7 100755 --- a/scripts/build_docs.sh +++ b/scripts/build_docs.sh @@ -14,5 +14,5 @@ VERSION=${VERSION:-$(python -c "from recordlinker._version import __version__; p SITE_NAME="RecordLinker Documentation (${VERSION})" SITE_NAME=${SITE_NAME} mkdocs build --config-file docs/mkdocs.yml -d "../${OUT}" -python -m recordlinker.utils.openapi_schema > ${OUT}/openapi.json -npx @redocly/cli build-docs -t docs/api_template.hbs -o "${OUT}/api-docs.html" "${OUT}/openapi.json" +python -m recordlinker.utils.openapi_schema > "${OUT}/openapi.json" +npx @redocly/cli build-docs -t docs/api_template.hbs -o "${OUT}/api-docs.html" "${OUT}/openapi.json"