Skip to content

Commit e00aa93

Browse files
committed
Moved afterEach into the driver
Otherwise the cleanup happens in a non deterministic order
1 parent f3923b4 commit e00aa93

File tree

2 files changed

+33
-33
lines changed

2 files changed

+33
-33
lines changed

src/Frontend/test/drivers/vitest/driver.ts

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import { it as itVitest, describe } from "vitest";
1+
import { test as testVitest, describe } from "vitest";
22
import { Driver } from "../../driver";
33
import { mount } from "@/mount";
44
import makeRouter from "../../../src/router";
55
import { mockEndpoint, mockEndpointDynamic } from "../../utils";
6-
import { mockServer } from "../../mock-server";
76
import { App } from "vue";
7+
import { mockServer } from "../../mock-server";
8+
import flushPromises from "flush-promises";
89

910
function makeDriver() {
1011
let app: App<Element>;
@@ -37,18 +38,38 @@ function makeDriver() {
3738
return driver;
3839
}
3940

40-
const test = itVitest.extend<{ driver: Driver }>({
41+
function deleteAllCookies() {
42+
const cookies = document.cookie.split(";");
43+
44+
for (let i = 0; i < cookies.length; i++) {
45+
const cookie = cookies[i];
46+
const eqPos = cookie.indexOf("=");
47+
const name = eqPos > -1 ? cookie.slice(0, eqPos) : cookie;
48+
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
49+
}
50+
}
51+
52+
const test = testVitest.extend<{ driver: Driver }>({
4153
// eslint-disable-next-line no-empty-pattern, @typescript-eslint/no-explicit-any
4254
driver: async ({}, use: any) => {
43-
//Reset the mocked handlers before executing the test
44-
mockServer.resetHandlers();
45-
4655
const driver = makeDriver();
56+
console.log("Starting test");
57+
4758
//run the test
4859
await use(driver);
4960

61+
console.log("Test ended");
5062
//unmount the app after the test runs
63+
await flushPromises();
5164
driver.disposeApp();
65+
66+
console.log("Cleanup after test");
67+
mockServer.resetHandlers();
68+
//Make JSDOM create a fresh document per each test run
69+
jsdom.reconfigure({ url: "http://localhost:3000/" });
70+
localStorage.clear();
71+
sessionStorage.clear();
72+
deleteAllCookies();
5273
},
5374
});
5475

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { afterAll, afterEach, beforeAll, beforeEach, vi } from "vitest";
1+
import { afterAll, beforeAll, beforeEach, vi } from "vitest";
22
import { mockServer } from "../../mock-server";
33
import "@testing-library/jest-dom/vitest";
44

@@ -14,13 +14,13 @@ export function disableMonitoring() {
1414
vi.stubGlobal("defaultConfig", { ...defaultConfig, ...{ monitoring_urls: ["!"] } });
1515
}
1616

17-
vi.stubGlobal("defaultConfig", defaultConfig);
18-
1917
beforeEach(() => {
2018
vi.stubGlobal("defaultConfig", defaultConfig);
2119
});
2220

2321
beforeAll(() => {
22+
console.log("Starting mock server");
23+
2424
mockServer.listen({
2525
onUnhandledRequest: (request, { error }) => {
2626
console.log("Unhandled %s %s", request.method, request.url);
@@ -29,28 +29,7 @@ beforeAll(() => {
2929
});
3030
});
3131

32-
afterAll(async () => {
33-
//Intentionally not calling mockServer.close here to prevent ServicePulse in flight messages after app unmount to fail
34-
});
35-
36-
function deleteAllCookies() {
37-
const cookies = document.cookie.split(";");
38-
39-
for (let i = 0; i < cookies.length; i++) {
40-
const cookie = cookies[i];
41-
const eqPos = cookie.indexOf("=");
42-
const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
43-
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
44-
}
45-
}
46-
47-
afterEach(() => {
48-
//Intentionally not calling mockServer.resetHandlers here to prevent ServicePulse in flight messages after app unmount to fail.
49-
//mockServer.resetHandlers is being called instead in driver.ts
50-
51-
//Make JSDOM create a fresh document per each test run
52-
jsdom.reconfigure({ url: "http://localhost:3000/" });
53-
localStorage.clear();
54-
sessionStorage.clear();
55-
deleteAllCookies();
32+
afterAll(() => {
33+
console.log("Shutting down mock server");
34+
mockServer.close();
5635
});

0 commit comments

Comments
 (0)