Skip to content

Commit e2fd245

Browse files
committed
wip
1 parent 53e3a3d commit e2fd245

20 files changed

Lines changed: 728 additions & 40 deletions

File tree

dashboard/e2e/selectors/common.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
export const COMMON_SELECTORS = {
2+
tableRow: 'tr',
3+
tableHeader: 'th',
4+
5+
originDropdown: '[data-test-id="origin-dropdown"]',
6+
originOption: (origin: string) => `[data-test-id="origin-option-${origin}"]`,
7+
8+
STATUS_FILTER_TEXT: {
9+
ALL: 'All:',
10+
SUCCESS: 'Success:',
11+
FAILED: 'Failed:',
12+
INCONCLUSIVE: 'Inconclusive:',
13+
},
14+
statusFilterSelector: (status: string) => `button:has-text("${status}")`,
15+
16+
STATUS_LABEL_TEXT: {
17+
PASS: 'PASS',
18+
FAIL: 'FAIL',
19+
ERROR: 'ERROR',
20+
MISS: 'MISS',
21+
SKIP: 'SKIP',
22+
DONE: 'DONE',
23+
NULL: 'NULL',
24+
},
25+
SECTION_TEXT: {
26+
BUILD_STATUS: 'Build Status',
27+
BOOT_STATUS: 'Boot Status',
28+
},
29+
statusLabelSelector: (section: string, status: string) =>
30+
`text="${section}" >> .. >> label:has-text("${status}")`,
31+
} as const;

dashboard/e2e/selectors/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './common';
2+
export * from './tree-listing';
3+
export * from './tree-details';
Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
import { COMMON_SELECTORS } from './common';
2+
3+
export const TREE_DETAILS_SELECTORS = {
4+
breadcrumbTreesLink: '[data-test-id="breadcrumb-trees-link"]',
5+
6+
treeHeaderTable: 'table',
7+
8+
tabs: {
9+
builds: 'button:has-text("Builds")',
10+
boots: 'button:has-text("Boots")',
11+
tests: 'button:has-text("Tests")',
12+
},
13+
14+
filters: {
15+
button: 'button:has-text("Filters")',
16+
drawer: 'aside',
17+
drawerContent: '[role="dialog"]',
18+
filterButton: '[data-test-id="filter-button"]',
19+
cancelButton: '[data-test-id="filter-cancel-button"]',
20+
clearAllFilters: 'text="Clear all"',
21+
buildStatusSection: `text="${COMMON_SELECTORS.SECTION_TEXT.BUILD_STATUS}"`,
22+
bootStatusSection: `text="${COMMON_SELECTORS.SECTION_TEXT.BOOT_STATUS}"`,
23+
buildStatus: {
24+
pass: COMMON_SELECTORS.statusLabelSelector(
25+
COMMON_SELECTORS.SECTION_TEXT.BUILD_STATUS,
26+
COMMON_SELECTORS.STATUS_LABEL_TEXT.PASS,
27+
),
28+
fail: COMMON_SELECTORS.statusLabelSelector(
29+
COMMON_SELECTORS.SECTION_TEXT.BUILD_STATUS,
30+
COMMON_SELECTORS.STATUS_LABEL_TEXT.FAIL,
31+
),
32+
error: COMMON_SELECTORS.statusLabelSelector(
33+
COMMON_SELECTORS.SECTION_TEXT.BUILD_STATUS,
34+
COMMON_SELECTORS.STATUS_LABEL_TEXT.ERROR,
35+
),
36+
miss: COMMON_SELECTORS.statusLabelSelector(
37+
COMMON_SELECTORS.SECTION_TEXT.BUILD_STATUS,
38+
COMMON_SELECTORS.STATUS_LABEL_TEXT.MISS,
39+
),
40+
skip: COMMON_SELECTORS.statusLabelSelector(
41+
COMMON_SELECTORS.SECTION_TEXT.BUILD_STATUS,
42+
COMMON_SELECTORS.STATUS_LABEL_TEXT.SKIP,
43+
),
44+
done: COMMON_SELECTORS.statusLabelSelector(
45+
COMMON_SELECTORS.SECTION_TEXT.BUILD_STATUS,
46+
COMMON_SELECTORS.STATUS_LABEL_TEXT.DONE,
47+
),
48+
null: COMMON_SELECTORS.statusLabelSelector(
49+
COMMON_SELECTORS.SECTION_TEXT.BUILD_STATUS,
50+
COMMON_SELECTORS.STATUS_LABEL_TEXT.NULL,
51+
),
52+
},
53+
bootStatus: {
54+
pass: COMMON_SELECTORS.statusLabelSelector(
55+
COMMON_SELECTORS.SECTION_TEXT.BOOT_STATUS,
56+
COMMON_SELECTORS.STATUS_LABEL_TEXT.PASS,
57+
),
58+
fail: COMMON_SELECTORS.statusLabelSelector(
59+
COMMON_SELECTORS.SECTION_TEXT.BOOT_STATUS,
60+
COMMON_SELECTORS.STATUS_LABEL_TEXT.FAIL,
61+
),
62+
error: COMMON_SELECTORS.statusLabelSelector(
63+
COMMON_SELECTORS.SECTION_TEXT.BOOT_STATUS,
64+
COMMON_SELECTORS.STATUS_LABEL_TEXT.ERROR,
65+
),
66+
miss: COMMON_SELECTORS.statusLabelSelector(
67+
COMMON_SELECTORS.SECTION_TEXT.BOOT_STATUS,
68+
COMMON_SELECTORS.STATUS_LABEL_TEXT.MISS,
69+
),
70+
skip: COMMON_SELECTORS.statusLabelSelector(
71+
COMMON_SELECTORS.SECTION_TEXT.BOOT_STATUS,
72+
COMMON_SELECTORS.STATUS_LABEL_TEXT.SKIP,
73+
),
74+
done: COMMON_SELECTORS.statusLabelSelector(
75+
COMMON_SELECTORS.SECTION_TEXT.BOOT_STATUS,
76+
COMMON_SELECTORS.STATUS_LABEL_TEXT.DONE,
77+
),
78+
},
79+
},
80+
81+
buildHistoryGraph: 'img',
82+
83+
statusCard: {
84+
title: '.flex-col:has(div:has-text("Build status"))',
85+
titleFirst: '.flex-col:has(div:has-text("Build status"))',
86+
statusButton: (status: string) => `[data-test-id="${status}"]`,
87+
},
88+
89+
summaryCards: {
90+
arch: 'text="Summary"',
91+
},
92+
93+
issuesCard: {
94+
title: 'text="Issues"',
95+
button: 'button[aria-label="Issues"]',
96+
},
97+
98+
buildTable: {
99+
table: 'table',
100+
statusFilters: {
101+
all: COMMON_SELECTORS.statusFilterSelector(
102+
COMMON_SELECTORS.STATUS_FILTER_TEXT.ALL,
103+
),
104+
success: COMMON_SELECTORS.statusFilterSelector(
105+
COMMON_SELECTORS.STATUS_FILTER_TEXT.SUCCESS,
106+
),
107+
failed: COMMON_SELECTORS.statusFilterSelector(
108+
COMMON_SELECTORS.STATUS_FILTER_TEXT.FAILED,
109+
),
110+
inconclusive: COMMON_SELECTORS.statusFilterSelector(
111+
COMMON_SELECTORS.STATUS_FILTER_TEXT.INCONCLUSIVE,
112+
),
113+
},
114+
searchInput: 'input[placeholder*="Search"]',
115+
detailsButton: '[data-test-id="details-button"]',
116+
},
117+
118+
bootsTable: {
119+
statusFilters: {
120+
all: COMMON_SELECTORS.statusFilterSelector(
121+
COMMON_SELECTORS.STATUS_FILTER_TEXT.ALL,
122+
),
123+
success: COMMON_SELECTORS.statusFilterSelector(
124+
COMMON_SELECTORS.STATUS_FILTER_TEXT.SUCCESS,
125+
),
126+
failed: COMMON_SELECTORS.statusFilterSelector(
127+
COMMON_SELECTORS.STATUS_FILTER_TEXT.FAILED,
128+
),
129+
inconclusive: COMMON_SELECTORS.statusFilterSelector(
130+
COMMON_SELECTORS.STATUS_FILTER_TEXT.INCONCLUSIVE,
131+
),
132+
},
133+
detailsButton: '[data-test-id="details-button"]',
134+
},
135+
136+
testsTable: {
137+
statusFilters: {
138+
all: COMMON_SELECTORS.statusFilterSelector(
139+
COMMON_SELECTORS.STATUS_FILTER_TEXT.ALL,
140+
),
141+
success: COMMON_SELECTORS.statusFilterSelector(
142+
COMMON_SELECTORS.STATUS_FILTER_TEXT.SUCCESS,
143+
),
144+
failed: COMMON_SELECTORS.statusFilterSelector(
145+
COMMON_SELECTORS.STATUS_FILTER_TEXT.FAILED,
146+
),
147+
inconclusive: COMMON_SELECTORS.statusFilterSelector(
148+
COMMON_SELECTORS.STATUS_FILTER_TEXT.INCONCLUSIVE,
149+
),
150+
},
151+
testItem: 'tr',
152+
expandedRows: 'tr:has(td[colspan])',
153+
detailsButton: '[data-test-id="details-button"]',
154+
},
155+
156+
configTable: {
157+
link: (config: string) => `a:has-text("${config}")`,
158+
},
159+
160+
commitGraph: {
161+
container: '[data-test-id="commit-navigation-graph"]',
162+
svg: '[data-test-id="commit-navigation-graph"] svg',
163+
marks: '[data-test-id="commit-navigation-graph"] [class*="MuiMarkElement"]',
164+
},
165+
} as const;
Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ export const TREE_LISTING_SELECTORS = {
55

66
intervalInput: 'input[type="number"][min="1"]',
77

8-
// This requires nth() selector which can't be stored as string
98
itemsPerPageDropdown: '[role="listbox"]',
109
itemsPerPageOption: (value: string) => `[role="option"]:has-text("${value}")`,
1110

@@ -19,11 +18,3 @@ export const TREE_LISTING_SELECTORS = {
1918

2019
breadcrumbTreesLink: '[data-test-id="breadcrumb-link"]:has-text("Trees")',
2120
} as const;
22-
23-
export const COMMON_SELECTORS = {
24-
tableRow: 'tr',
25-
tableHeader: 'th',
26-
27-
originDropdown: '[data-test-id="origin-dropdown"]',
28-
originOption: (origin: string) => `[data-test-id="origin-option-${origin}"]`,
29-
} as const;

0 commit comments

Comments
 (0)