chore: testes de ponta a ponta no CI e limpeza do repositório
Job e2e separado no CI; testes de teclado, rolagem, sem JS, axe no celular e menu do celular; limites de metadados derivados do sitemap; sai @react-three/fiber e @react-three/drei; pastas de ferramentas (.augment, .kiro, .claude/settings.local.json) fora do Git.
This commit is contained in:
1 parent
6ac87824f3
commit
1a60795107
57 files changed
+625
-12090
No files matched your search
+27
-23
@@ -5,7 +5,7 @@ import { DESKTOP, PHONE, sitemapPaths } from "./helpers";
|
||||
/**
|
||||
* (a) Todas as rotas do /sitemap.xml respondem 200, sem erro de console e sem rolagem horizontal, no computador
|
||||
* (1440x900) e no celular (390x844).
|
||||
* (b) O axe não acha violação serious ou critical em nenhuma delas.
|
||||
* (b) O axe não acha violação serious ou critical em nenhuma delas, nos mesmos dois tamanhos.
|
||||
* As rotas vêm do próprio sitemap: uma página nova entra no teste sozinha.
|
||||
*/
|
||||
|
||||
@@ -64,28 +64,32 @@ for (const { name, size } of VIEWPORTS) {
|
||||
});
|
||||
}
|
||||
|
||||
test.describe("acessibilidade (axe), computador", () => {
|
||||
test.use({ viewport: DESKTOP });
|
||||
for (const { name, size } of VIEWPORTS) {
|
||||
test.describe(`acessibilidade (axe), ${name}`, () => {
|
||||
test.use({ viewport: size });
|
||||
|
||||
test("nenhuma violação serious ou critical em nenhuma rota do sitemap", async ({
|
||||
page,
|
||||
request,
|
||||
}) => {
|
||||
const paths = await sitemapPaths(request);
|
||||
test("nenhuma violação serious ou critical em nenhuma rota do sitemap", async ({
|
||||
page,
|
||||
request,
|
||||
}) => {
|
||||
const paths = await sitemapPaths(request);
|
||||
|
||||
for (const path of paths) {
|
||||
await test.step(path, async () => {
|
||||
await page.goto(path, { waitUntil: "load" });
|
||||
await page.waitForTimeout(800);
|
||||
const { violations } = await new AxeBuilder({ page }).analyze();
|
||||
const serious = violations
|
||||
.filter(({ impact }) => impact === "serious" || impact === "critical")
|
||||
.map(
|
||||
({ id, impact, nodes }) =>
|
||||
`${id} (${impact}): ${nodes.length} elemento(s), por exemplo ${nodes[0]?.target.join(" ")}`,
|
||||
);
|
||||
expect.soft(serious, `${path}: axe`).toEqual([]);
|
||||
});
|
||||
}
|
||||
for (const path of paths) {
|
||||
await test.step(path, async () => {
|
||||
await page.goto(path, { waitUntil: "load" });
|
||||
await page.waitForTimeout(800);
|
||||
const { violations } = await new AxeBuilder({ page }).analyze();
|
||||
const serious = violations
|
||||
.filter(
|
||||
({ impact }) => impact === "serious" || impact === "critical",
|
||||
)
|
||||
.map(
|
||||
({ id, impact, nodes }) =>
|
||||
`${id} (${impact}): ${nodes.length} elemento(s), por exemplo ${nodes[0]?.target.join(" ")}`,
|
||||
);
|
||||
expect.soft(serious, `${path}: axe`).toEqual([]);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user