Skip to content

Commit 40432b3

Browse files
committed
💣 Correction des tests d'intégration suite à une mise à jour de Playwright (#1755)
* 🎨 Revue des suggestions en homepage et boutons de partage (+ ajout de django Lookbook) (#1728) * Fix fixtures installation * Rename and comment * Rename * Add proposition service fixture * Fix selector * Update selector * Fixtures * Missing proposition services * Missing proposition services * Rollback precommit changes * Fix fixtures * Fix fixtures * Fix fixtures * Fix fixtures * Fix fixtures * Fix fixtures * Update fixtures... * Fix fixtures * Fix this * Skip digital acteurs * Fix formulaire test * Disable test for now * Click on svg explicitely * Click on svg explicitely * Add docstring * Ignore file * Test * Add basic config * redirect http to https locally * wip * Remove sidebar * Add share / embed buttons * Improve spacing * Improve alignment on homepage * Add icon to footer * Missing produit * Add comment * Retours Delphine * Update wordings * WIP * 🇫🇷 Utiliser le header du DSFR (#1737) * Fix fixtures installation * Rename and comment * Rename * Add proposition service fixture * Fix selector * Update selector * Fixtures * Missing proposition services * Missing proposition services * Rollback precommit changes * Fix fixtures * Fix fixtures * Fix fixtures * Fix fixtures * Fix fixtures * Fix fixtures * Update fixtures... * Fix fixtures * Fix this * Skip digital acteurs * Fix formulaire test * Disable test for now * Click on svg explicitely * Click on svg explicitely * Add docstring * Ignore file * Test * Add basic config * redirect http to https locally * wip * Remove sidebar * Add share / embed buttons * Improve spacing * Improve alignment on homepage * Add icon to footer * Missing produit * Add comment * Retours Delphine * Update wordings * WIP * Add header * WIP * Improve patchwork spacing * add contactez nous menu item * Use main menu instead * Use main menu * Add loupe in header * 🪄 Ajout de rendering conditionnel selon qu'on soit dans une iframe ou non (#1738) * Fix fixtures installation * ename and comment * Rename * Fix selector * Fixtures * Missing proposition services * Disable test for now * Click on svg explicitely * Ignore file * Test * Add basic config * redirect http to https locally * wip * Remove sidebar * Add share / embed buttons * Improve spacing * Improve alignment on homepage * Add icon to footer * Missing produit * Add comment * Retours Delphine * Update wordings * WIP * Add header * WIP * Improve patchwork spacing * add contactez nous menu item * Use main menu instead * Use main menu * Add loupe in header * add conditionnal rendering * missing querystring * WIP * Improve querystring navigation * wip * WIP * Add iframe field to search form to customize links * Rely on session storage instead * Remove setting * WIP * Better persist querystring accross navigation * Better persist querystring accross navigation * cleanup * 🗑️ Suppression de Uvicorn des dépendances (#1754) * 🗑️ Suppression de Uvicorn des dépendances * Lockfile * fix tests * Fix formulaire test * Fix e2e * Fix e2e
1 parent 07f6fd4 commit 40432b3

9 files changed

+220
-160
lines changed

.secrets.baseline

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@
9090
{
9191
"path": "detect_secrets.filters.allowlist.is_line_allowlisted"
9292
},
93+
{
94+
"path": "detect_secrets.filters.common.is_baseline_file",
95+
"filename": ".secrets.baseline"
96+
},
9397
{
9498
"path": "detect_secrets.filters.common.is_ignored_due_to_verification_policies",
9599
"min_level": 2
@@ -138,7 +142,7 @@
138142
"filename": "core/settings.py",
139143
"hashed_secret": "1ee34e26aeaf89c64ecc2c85efe6a961b75a50e9",
140144
"is_verified": false,
141-
"line_number": 291
145+
"line_number": 290
142146
}
143147
],
144148
"dbt/package-lock.yml": [
@@ -187,5 +191,5 @@
187191
}
188192
]
189193
},
190-
"generated_at": "2025-06-23T18:57:14Z"
194+
"generated_at": "2025-07-02T08:18:24Z"
191195
}

e2e_tests/accessibility.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ test.describe("WCAG Compliance Tests", () => {
4848

4949
const accessibilityScanResults = await new AxeBuilder({ page })
5050
.exclude("[data-disable-axe]")
51+
// ImpactCO2 iframe does not load during e2e tests, it is safe
52+
// to exclude it usually includes a title and is a valid <iframe>
53+
// tag.
54+
.exclude('iframe[src*="impactco2.fr"]')
5155
.withTags(WCAG_TAGS)
5256
.analyze()
5357

e2e_tests/advanced_filters.spec.ts

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,55 @@
11
import { expect, test } from "@playwright/test"
22
import { hideDjangoToolbar } from "./helpers"
33

4-
async function searchInCarteMode(page){
4+
async function searchInCarteMode(page) {
55
await page.locator("input#id_adresse").click()
66
await page.locator("input#id_adresse").fill("Paris")
7-
await page.locator("#id_adresseautocomplete-list.autocomplete-items div:nth-of-type(2)").click()
7+
await page
8+
.locator("#id_adresseautocomplete-list.autocomplete-items div:nth-of-type(2)")
9+
.click()
810
}
911

10-
async function openAdvancedFilters(page, dataTestId="advanced-filters") {
12+
async function openAdvancedFilters(page, dataTestId = "advanced-filters") {
1113
// Explicitely wait for addresses to load
12-
await page.waitForTimeout(5000);
14+
await page.waitForTimeout(5000)
1315
await page.locator(`button[data-testid=${dataTestId}]`).click()
14-
await expect(page.locator("[data-testid=advanced-filters-modal] .fr-modal__content h2")).toBeInViewport()
15-
await page.locator("[data-testid=advanced-filters-modal] .fr-modal__header button").click()
16-
await expect(page.locator("[data-testid=advanced-filters-modal] .fr-modal__content h2")).toBeHidden()
16+
await expect(
17+
page.locator("[data-testid=advanced-filters-modal] .fr-modal__content h2"),
18+
).toBeInViewport()
19+
await page
20+
.locator("[data-testid=advanced-filters-modal] .fr-modal__header button")
21+
.click()
22+
await expect(
23+
page.locator("[data-testid=advanced-filters-modal] .fr-modal__content h2"),
24+
).toBeHidden()
1725
}
1826

1927
test("Filtres avancés s'ouvrent et se ferment en mode formulaire", async ({ page }) => {
20-
await page.goto(`/formulaire`, {
21-
waitUntil: "networkidle",
22-
})
23-
await hideDjangoToolbar(page)
24-
await openAdvancedFilters(page)
28+
await page.goto(`/formulaire`, {
29+
waitUntil: "domcontentloaded",
30+
})
31+
await hideDjangoToolbar(page)
32+
await openAdvancedFilters(page)
2533
})
2634

27-
test("Desktop | Filtres avancés s'ouvrent et se ferment en mode carte", async ({ page }) => {
28-
await page.goto(`/carte`, {
29-
waitUntil: "networkidle",
30-
})
31-
await hideDjangoToolbar(page)
32-
await searchInCarteMode(page)
33-
await openAdvancedFilters(page, "advanced-filters-in-legend")
35+
test("Desktop | Filtres avancés s'ouvrent et se ferment en mode carte", async ({
36+
page,
37+
}) => {
38+
await page.goto(`/carte`, {
39+
waitUntil: "domcontentloaded",
40+
})
41+
await hideDjangoToolbar(page)
42+
await searchInCarteMode(page)
43+
await openAdvancedFilters(page, "advanced-filters-in-legend")
3444
})
3545

36-
test("Mobile | Filtres avancés s'ouvrent et se ferment en mode carte", async ({ page }) => {
37-
await page.goto(`/carte`, {
38-
waitUntil: "networkidle",
39-
})
40-
await hideDjangoToolbar(page)
41-
await searchInCarteMode(page)
42-
await openAdvancedFilters(page)
46+
test("Mobile | Filtres avancés s'ouvrent et se ferment en mode carte", async ({
47+
page,
48+
}) => {
49+
await page.goto(`/carte`, {
50+
waitUntil: "domcontentloaded",
51+
})
52+
await hideDjangoToolbar(page)
53+
await searchInCarteMode(page)
54+
await openAdvancedFilters(page)
4355
})

e2e_tests/assistant.spec.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ async function searchOnProduitPage(page, searchedAddress: string) {
1616

1717
test("Desktop | La carte s'affiche sur une fiche déchet/objet", async ({ page }) => {
1818
// Navigate to the carte page
19-
await page.goto(`/dechet/lave-linge`, { waitUntil: "networkidle" })
19+
await page.goto(`/dechet/lave-linge`, { waitUntil: "domcontentloaded" })
2020
// await hideDjangoToolbar(page)
2121
await searchOnProduitPage(page, "Auray")
2222
const sessionStorage = await page.evaluate(() => window.sessionStorage)
@@ -27,23 +27,23 @@ test("Desktop | La carte s'affiche sur une fiche déchet/objet", async ({ page }
2727

2828
test("Desktop | Le tracking PostHog fonctionne comme prévu", async ({ page }) => {
2929
// Check that homepage scores 1
30-
await page.goto(`/`, { waitUntil: "networkidle" })
30+
await page.goto(`/`, { waitUntil: "domcontentloaded" })
3131
// await hideDjangoToolbar(page)
3232
let sessionStorage = await page.evaluate(() => window.sessionStorage)
3333
expect(sessionStorage.homePageView).toBe("0")
3434

3535
// Navigate to a produit page and check that it scores 1
36-
await page.goto(`/dechet/lave-linge`, { waitUntil: "networkidle" })
36+
await page.goto(`/dechet/lave-linge`, { waitUntil: "domcontentloaded" })
3737
sessionStorage = await page.evaluate(() => window.sessionStorage)
3838
expect(sessionStorage.produitPageView).toBe("1")
3939

4040
// Click on a pin on the map and check that it scores 1
4141
await searchOnProduitPage(page, "Auray")
42-
const markers = page.locator(".leaflet-marker-icon")
4342
// Remove the home marker (red dot) that prevents Playwright from clicking other markers
4443
await page.evaluate(() => {
4544
document.querySelector(".leaflet-marker-icon.home-icon")?.remove()
4645
})
46+
const markers = page.locator(".leaflet-marker-icon")
4747

4848
// Ensure we have at least one marker, and let's click on a marker.
4949
// The approach is feels cumbersome, this is because Playwright has a
@@ -89,7 +89,7 @@ test("Desktop | Le tracking PostHog fonctionne comme prévu", async ({ page }) =
8989

9090
// Ensure that the scores does not increases after
9191
// several homepage visits
92-
await page.goto(`/`, { waitUntil: "networkidle" })
92+
await page.goto(`/`, { waitUntil: "domcontentloaded" })
9393
sessionStorage = await page.evaluate(() => window.sessionStorage)
9494
expect(sessionStorage.homePageView).toBe("0")
9595
})

e2e_tests/browser_version.spec.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import { expect, test } from "@playwright/test"
22

33
test("Browser version alert is not displayed", async ({ page }) => {
4-
await page.goto(`/formulaire`, { waitUntil: "networkidle" })
4+
await page.goto(`/formulaire`, { waitUntil: "domcontentloaded" })
55

6-
const titlePage = await page.title()
7-
expect(titlePage).toBe("Longue vie aux objets")
6+
const titlePage = await page.title()
7+
expect(titlePage).toBe("Longue vie aux objets")
88

9-
// Check that the browser version alert is not displayed
10-
const alert = await page.$("#obsolete_browser_message")
11-
expect(await alert?.getAttribute("class")).toContain("qf-hidden")
9+
// Check that the browser version alert is not displayed
10+
const alert = await page.$("#obsolete_browser_message")
11+
expect(await alert?.getAttribute("class")).toContain("qf-hidden")
1212

13-
// check libelé "L'application nécessite Javascript pour être exécutée correctement" is inside a noscript tag
14-
const noscript = await page.$("noscript")
15-
const noscriptContent = await noscript?.textContent()
16-
expect(noscriptContent).toContain(
17-
"L'application nécessite Javascript pour être exécutée correctement",
18-
)
13+
// check libelé "L'application nécessite Javascript pour être exécutée correctement" is inside a noscript tag
14+
const noscript = await page.$("noscript")
15+
const noscriptContent = await noscript?.textContent()
16+
expect(noscriptContent).toContain(
17+
"L'application nécessite Javascript pour être exécutée correctement",
18+
)
1919
})

e2e_tests/carte.spec.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { expect, test } from "@playwright/test";
2-
import { hideDjangoToolbar, searchDummyAdresse } from "./helpers";
1+
import { expect, test } from "@playwright/test"
2+
import { hideDjangoToolbar, searchDummyAdresse } from "./helpers"
33

44
test("Desktop | La carte affiche la légende après une recherche", async ({ page }) => {
5-
// Navigate to the carte page
6-
await page.goto(`/carte`, { waitUntil: "networkidle" });
7-
await hideDjangoToolbar(page)
5+
// Navigate to the carte page
6+
await page.goto(`/carte`, { waitUntil: "domcontentloaded" })
7+
await hideDjangoToolbar(page)
88

9-
await expect(page.getByTestId("carte-legend")).toBeHidden()
9+
await expect(page.getByTestId("carte-legend")).toBeHidden()
1010

11-
// Fill "Adresse" autocomplete input
12-
await searchDummyAdresse(page)
13-
await expect(page.getByTestId("carte-legend")).toBeVisible()
11+
// Fill "Adresse" autocomplete input
12+
await searchDummyAdresse(page)
13+
await expect(page.getByTestId("carte-legend")).toBeVisible()
1414
})

0 commit comments

Comments
 (0)