-
Notifications
You must be signed in to change notification settings - Fork 15
/
06.page-objects.js
84 lines (70 loc) · 2.2 KB
/
06.page-objects.js
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import { browser } from "k6/experimental/browser";
import { check } from "k6";
import { Trend } from "k6/metrics";
import { LoginPage } from "./pages/login-page.js";
import { RecommendationsPage } from "./pages/recommendations-page.js";
import { PageUtils } from "./pages/page-utils.js";
const BASE_URL = __ENV.BASE_URL || "http://localhost:3333";
export const options = {
scenarios: {
pizzaRecommendations: {
executor: "shared-iterations",
options: {
browser: {
type: "chromium",
},
},
exec: 'pizzaRecommendations'
},
admin: {
executor: "shared-iterations",
options: {
browser: {
type: "chromium",
},
},
exec: 'admin'
},
},
thresholds: {
browser_web_vital_fcp: ["p(95) < 1000"],
browser_web_vital_lcp: ["p(95) < 2000"],
}
};
const myTrend = new Trend('totalActionTime');
export async function admin() {
const page = browser.newPage();
try {
const loginPage = new LoginPage(page);
await loginPage.goto(BASE_URL);
await loginPage.login();
check(loginPage, {
"logout button text": loginPage.getLogoutButtonText() == "Logout",
});
} finally {
page.close();
}
}
export async function pizzaRecommendations() {
const page = browser.newPage();
const recommendationsPage = new RecommendationsPage(page);
const pageUtils = new PageUtils(page);
try {
await recommendationsPage.goto(BASE_URL);
pageUtils.addPerformanceMark('page-visit');
check(recommendationsPage, {
header: recommendationsPage.getHeadingTextContent() == "Looking to break out of your pizza routine?",
});
await recommendationsPage.getPizzaRecommendation();
pageUtils.addPerformanceMark('recommendations-returned');
check(recommendationsPage, {
recommendation: recommendationsPage.getPizzaRecommendationsContent() != "",
});
//Get time difference between visiting the page and pizza recommendations returned
pageUtils.measurePerformance('total-action-time', 'page-visit', 'recommendations-returned')
const totalActionTime = pageUtils.getPerformanceDuration('total-action-time');
myTrend.add(totalActionTime);
} finally {
page.close();
}
}