diff --git a/package-lock.json b/package-lock.json index ca72fb3e0..24215682c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,6 +38,7 @@ "shapefile.js": "^1.1.3" }, "devDependencies": { + "@axe-core/playwright": "^4.9.1", "@babel/cli": "^7.19.3", "@babel/core": "^7.20.5", "@babel/preset-env": "^7.20.2", @@ -65,6 +66,7 @@ "@types/node": "^20.4.2", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", + "axe-html-reporter": "^2.2.3", "babel-jest": "^29.3.1", "babel-loader": "^9.1.0", "buffer": "^6.0.3", @@ -172,6 +174,18 @@ "react": ">=16.9.0" } }, + "node_modules/@axe-core/playwright": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.9.1.tgz", + "integrity": "sha512-8m4WZbZq7/aq7ZY5IG8GqV+ZdvtGn/iJdom+wBg+iv/3BAOBIfNQtIu697a41438DzEEyptXWmC3Xl5Kx/o9/g==", + "dev": true, + "dependencies": { + "axe-core": "~4.9.1" + }, + "peerDependencies": { + "playwright-core": ">= 1.0.0" + } + }, "node_modules/@babel/cli": { "version": "7.24.5", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.5.tgz", @@ -9163,6 +9177,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axe-core": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", + "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axe-html-reporter": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/axe-html-reporter/-/axe-html-reporter-2.2.3.tgz", + "integrity": "sha512-io8aCEt4fJvv43W+33n3zEa8rdplH5Ti2v5fOnth3GBKLhLHarNs7jj46xGfpnGnpaNrz23/tXPHC3HbwTzwwA==", + "dev": true, + "dependencies": { + "mustache": "^4.0.1", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=8.9.0" + }, + "peerDependencies": { + "axe-core": ">=3" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -18894,6 +18933,15 @@ "multicast-dns": "cli.js" } }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "bin": { + "mustache": "bin/mustache" + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", diff --git a/package.json b/package.json index a7af5857b..002ea9125 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "shapefile.js": "^1.1.3" }, "devDependencies": { + "@axe-core/playwright": "^4.9.1", "@babel/cli": "^7.19.3", "@babel/core": "^7.20.5", "@babel/preset-env": "^7.20.2", @@ -98,6 +99,7 @@ "@types/node": "^20.4.2", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", + "axe-html-reporter": "^2.2.3", "babel-jest": "^29.3.1", "babel-loader": "^9.1.0", "buffer": "^6.0.3", diff --git a/src/e2e-tests/accessibility.spec.ts b/src/e2e-tests/accessibility.spec.ts new file mode 100644 index 000000000..4cc5dde63 --- /dev/null +++ b/src/e2e-tests/accessibility.spec.ts @@ -0,0 +1,18 @@ +import { test } from '@playwright/test'; + +import { scan } from '@terrestris/shogun-e2e-tests/dist/accessibility/client'; + +test.use({ + storageState: 'playwright/.auth/admin.json' +}); + +test('accessibility', async ({ + page +}) => { + + await page.goto(`https://${process.env.HOST}/client/?applicationId=${process.env.ID}`); + await page.waitForTimeout(5000); + + await page.waitForLoadState('networkidle'); + await scan(page); +});