1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import { test, expect } from "@playwright/test";
const { uniq } = require("lodash");
const RouterConfig = require("../../config/routes").default;
const BASE_URL = `http://localhost:${process.env.PORT || 8001}`;
function formatter(routes, parentPath = "") {
const fixedParentPath = parentPath.replace(/\/{1,}/g, "/");
let result = [];
routes.forEach((item) => {
if (item.path && !item.path.startsWith("/")) {
result.push(`${fixedParentPath}/${item.path}`.replace(/\/{1,}/g, "/"));
}
if (item.path && item.path.startsWith("/")) {
result.push(`${item.path}`.replace(/\/{1,}/g, "/"));
}
if (item.routes) {
result = result.concat(
formatter(
item.routes,
item.path ? `${fixedParentPath}/${item.path}` : parentPath
)
);
}
});
return uniq(result.filter((item) => !!item));
}
const testPage = (path, page) => async () => {
await page.evaluate(() => {
localStorage.setItem("antd-pro-authority", '["admin"]');
});
await page.goto(`${BASE_URL}${path}`);
await page.waitForSelector("footer", {
timeout: 2000,
});
const haveFooter = await page.evaluate(
() => document.getElementsByTagName("footer").length > 0
);
expect(haveFooter).toBeTruthy();
};
const routers = formatter(RouterConfig);
routers.forEach((route) => {
test(`test route page ${route}`, async ({ page }) => {
await testPage(route, page);
});
});