Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
e688e94
chore: add accessibility action plan and gap report for IBM Level 1 c…
viktoravelino Jun 9, 2026
2ffd2d1
Merge branch 'release-1.10.0' into feat/a11y
viktoravelino Jun 9, 2026
fa7d541
feat: integrate accessibility checker for automated a11y scans
viktoravelino Jun 9, 2026
c9d45fa
feat: add accessibility test usage documentation for IBM scans
viktoravelino Jun 9, 2026
f188b5b
feat: enhance accessibility testing with JSON report aggregation and …
viktoravelino Jun 10, 2026
170acde
feat: add GitHub Actions workflow for IBM accessibility scans
viktoravelino Jun 10, 2026
6d5ef55
feat: update a11y scan workflow to allow testing from feat/a11y branch
viktoravelino Jun 10, 2026
db8da2a
Merge branch 'release-1.10.0' into feat/a11y
viktoravelino Jun 10, 2026
cd9ab69
feat: skip Puppeteer download during npm install in Dockerfiles for a…
viktoravelino Jun 10, 2026
66318cf
Merge branch 'feat/a11y' of github.com:langflow-ai/langflow into feat…
viktoravelino Jun 10, 2026
583afd0
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 12, 2026
d76e217
feat: enhance a11y scan workflow to resolve and scan latest release b…
viktoravelino Jun 12, 2026
9dbde72
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 15, 2026
3c1b2cd
test: add component a11y unit tests (jest-axe) (#13613)
viktoravelino Jun 15, 2026
287ca4c
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 15, 2026
0007f20
feat: Add a11y regression scan suite (#13663)
viktoravelino Jun 16, 2026
caad567
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 16, 2026
5992048
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 17, 2026
d82723e
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 18, 2026
c49a8db
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 19, 2026
c368ade
fix(a11y): restore focus-visible indicators (#13664)
olayinkaadelakun Jun 22, 2026
d36083e
a11y: improve auth accessibility coverage (#13724)
viktoravelino Jun 22, 2026
6fae209
fix(a11y): add accessible names and hide decorative icons in Langflow…
olayinkaadelakun Jun 22, 2026
5ea9fe6
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 23, 2026
6f7c1f8
fix(a11y): add accessible names to icon-only buttons, fix placeholder…
olayinkaadelakun Jun 24, 2026
f54bbbd
Merge remote-tracking branch 'origin/release-1.11.0' into feat/a11y
viktoravelino Jun 24, 2026
df4857f
fix: update package dependencies and versions in package-lock.json
viktoravelino Jun 24, 2026
168054d
chore: Remove accessibility documentation and reports
viktoravelino Jun 24, 2026
5eaf6f9
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 24, 2026
ab5b9d9
chore: Add accessibility scan reports (#13812)
viktoravelino Jun 25, 2026
04c861f
fix: update Playwright version to 1.60.0 and enhance a11y scan options
viktoravelino Jun 25, 2026
b2432ab
fix(test): keep fixture args destructured
viktoravelino Jun 25, 2026
adb1446
Merge branch 'release-1.11.0' into feat/a11y
viktoravelino Jun 25, 2026
28bb7a8
test(a11y): bootstrap asset route scans
viktoravelino Jun 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 157 additions & 0 deletions .github/workflows/a11y-scan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: Run Accessibility Scans (IBM Equal Access)

on:
# TEMP: remove before merging — allows testing the workflow from this
# branch, since workflow_dispatch only registers once the file is on main.
push:
branches: [feat/a11y]
Comment thread
viktoravelino marked this conversation as resolved.
Outdated
Comment thread
viktoravelino marked this conversation as resolved.
Outdated
schedule:
# Run nightly at 02:00 UTC, after the nightly build window
- cron: "0 2 * * *"
Comment thread
viktoravelino marked this conversation as resolved.
workflow_dispatch:
inputs:
ref:
description: "(Optional) ref to checkout"
required: false
type: string
assert:
description: "Fail the run on a11y violations (RUN_A11Y_ASSERT)"
required: false
type: boolean
default: false

env:
NODE_VERSION: "22"
PYTHON_VERSION: "3.13"
Comment thread
viktoravelino marked this conversation as resolved.
# Define the directory where Playwright browsers will be installed.
# This path is used for caching across workflows
PLAYWRIGHT_BROWSERS_PATH: "ms-playwright"
PLAYWRIGHT_VERSION: "1.59.1"
Comment thread
viktoravelino marked this conversation as resolved.
Outdated

jobs:
a11y-scan:
name: IBM Accessibility Scans
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# Cron only fires from the default branch, so scheduled runs resolve the
# latest release-* branch and scan that (same pattern as nightly_build).
- name: Resolve Ref To Scan
id: resolve_ref
shell: bash
run: |
if [ -n "${{ inputs.ref }}" ]; then
REF="${{ inputs.ref }}"
elif [ "${{ github.event_name }}" = "schedule" ]; then
REF=$(git ls-remote --heads https://github.com/${{ github.repository }} 'refs/heads/release-*' \
| awk '{print $2}' \
| sed 's|refs/heads/||' \
| grep -E '^release-[0-9]+\.[0-9]+\.[0-9]+$' \
| sort -V \
| tail -n 1)
if [ -z "$REF" ]; then
echo "No release-* branch found in ${{ github.repository }}"
exit 1
fi
else
REF="${{ github.ref }}"
fi
echo "ref=$REF" >> "$GITHUB_OUTPUT"
echo "Scanning ref: $REF"

- name: Checkout Repository
uses: actions/checkout@v6
with:
ref: ${{ steps.resolve_ref.outputs.ref }}

- name: Setup Node.js Environment
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}

- name: Get npm cache directory
id: npm-cache-dir
shell: bash
run: echo "dir=$(npm config get cache)" >> "$GITHUB_OUTPUT"

- name: Cache npm dependencies
uses: actions/cache@v5
continue-on-error: true
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-npm-${{ env.NODE_VERSION }}-${{ hashFiles('src/frontend/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-${{ env.NODE_VERSION }}-

- name: Install Frontend Dependencies
run: npm ci
working-directory: ./src/frontend

- name: Cache Playwright Browsers
id: cache-playwright
uses: actions/cache@v5
continue-on-error: true
with:
path: ${{ env.PLAYWRIGHT_BROWSERS_PATH }}
key: playwright-${{ env.PLAYWRIGHT_VERSION }}-chromium-${{ runner.os }}
restore-keys: |
playwright-${{ env.PLAYWRIGHT_VERSION }}-chromium-${{ runner.os }}

- name: Install Playwright Browser Dependencies
if: steps.cache-playwright.outputs.cache-hit != 'true'
shell: bash
run: |
cd ./src/frontend
npx playwright install --with-deps chromium

- name: "Setup Environment"
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
python-version: ${{ env.PYTHON_VERSION }}
prune-cache: false

- name: Install Python Dependencies
run: uv sync

- name: Run Playwright Specs With IBM Scans
shell: bash
env:
RUN_A11Y: "true"
RUN_A11Y_ASSERT: ${{ inputs.assert == true && 'true' || 'false' }}
LANGFLOW_DEACTIVE_TRACING: "true"
run: |
cd src/frontend
# Only specs that call runA11yScan produce reports; discover them
# so new scan hosts are picked up without editing this workflow.
SCAN_SPECS=$(grep -rl "runA11yScan(" tests --include="*.spec.ts" | sort)
echo "Specs with a11y scans:"
echo "$SCAN_SPECS"
npx playwright test $SCAN_SPECS --project=chromium --workers 1 --retries=2

- name: Build Aggregated A11y Summary
if: always()
shell: bash
run: |
cd src/frontend
if ls coverage/accessibility-reports/*.json > /dev/null 2>&1; then
npm run a11y:report --silent
{
echo '```text'
npm run a11y:report --silent
echo '```'
} >> "$GITHUB_STEP_SUMMARY"
else
echo "No accessibility reports were generated." | tee -a "$GITHUB_STEP_SUMMARY"
fi

- name: Upload Accessibility Reports
if: always()
uses: actions/upload-artifact@v6
with:
name: accessibility-reports-${{ github.run_attempt }}
path: src/frontend/coverage/accessibility-reports
retention-days: 30
overwrite: true
Loading
Loading