Skip to content

Commit 242e629

Browse files
committed
wip
1 parent e5a12cb commit 242e629

File tree

6 files changed

+95
-31
lines changed

6 files changed

+95
-31
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { Page, expect } from '@playwright/test';
2+
import DsmPageBase from './dsm-page-base';
3+
import { KitsTable } from 'dsm/component/tables/kits-table';
4+
import { KitTypeEnum } from 'dsm/component/kitType/enums/kitType-enum';
5+
import Checkbox from 'dss/component/checkbox';
6+
import { waitForNoSpinner } from 'utils/test-utils';
7+
8+
export default abstract class KitPageBase extends DsmPageBase {
9+
protected abstract defaultKitTypes: KitTypeEnum[];
10+
private readonly kitsQueueTable = new KitsTable(this.page);
11+
12+
constructor(readonly page: Page) {
13+
super(page);
14+
}
15+
16+
public get kitsTable(): KitsTable {
17+
return this.kitsQueueTable;
18+
}
19+
20+
public async waitForReady(kitTypes?: KitTypeEnum[]): Promise<void> {
21+
const knownKitTypes = kitTypes ?? this.defaultKitTypes;
22+
await Promise.all([
23+
this.page.waitForLoadState(),
24+
expect(this.page.locator('h1')).toHaveText('Kit Queue')
25+
]);
26+
await expect(async () => expect(await this.page.locator('mat-checkbox[id]').count()).toBeGreaterThanOrEqual(1)).toPass({ timeout: 60000 });
27+
await this.assertDisplayedKitTypes(knownKitTypes);
28+
await waitForNoSpinner(this.page);
29+
}
30+
31+
public async assertDisplayedKitTypes(kitTypes: KitTypeEnum[]): Promise<void> {
32+
for (const kitType of kitTypes) {
33+
await expect(this.getKitCheckbox(kitType).toLocator()).toBeVisible();
34+
}
35+
}
36+
37+
public getKitCheckbox(buttonLabel: KitTypeEnum): Checkbox {
38+
return new Checkbox(this.page, { label: buttonLabel });
39+
}
40+
41+
public async selectKitType(buttonLabel: KitTypeEnum): Promise<void> {
42+
await this.getKitCheckbox(buttonLabel).check();
43+
}
44+
}

playwright-e2e/dsm/pages/kit-queue-page.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import { Page, expect } from '@playwright/test';
22
import { KitTypeEnum } from 'dsm/component/kitType/enums/kitType-enum';
33
import { KitType } from 'dsm/component/kitType/kitType';
4-
import { KitsTable } from 'dsm/component/tables/kits-table';
4+
import Checkbox from 'dss/component/checkbox';
55
import { waitForNoSpinner } from 'utils/test-utils';
6+
import KitPageBase from './kit-page-base';
67

7-
export default class KitQueuePage {
8+
export default class KitQueuePage extends KitPageBase {
89
private readonly defaultKitTypes = [KitTypeEnum.SALIVA, KitTypeEnum.BLOOD];
910

1011
private readonly kitType = new KitType(this.page);
11-
private readonly kitsTable = new KitsTable(this.page);
1212

13-
constructor(private readonly page: Page) {}
13+
constructor(page: Page) {
14+
super(page);
15+
}
1416

1517
public async waitForReady(kitTypes?: KitTypeEnum[]): Promise<void> {
1618
const knownKitTypes = kitTypes ?? this.defaultKitTypes;

playwright-e2e/tests/dsm/kitUploadFlow/kit-queue-ui.spec.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import {WelcomePage} from 'dsm/pages/welcome-page';
44
import {Navigation} from 'dsm/component/navigation/navigation';
55
import {StudyEnum} from 'dsm/component/navigation/enums/selectStudyNav-enum';
66
import {SamplesNavEnum} from 'dsm/component/navigation/enums/samplesNav-enum';
7-
import KitsWithoutLabelPage from 'dsm/pages/kitsInfo-pages/kitsWithoutLabel-page';
87
import {KitsColumnsEnum} from 'dsm/pages/kitsInfo-pages/enums/kitsColumns-enum';
9-
import {getExpectedKitSelection, studyShortName} from 'utils/test-utils';
8+
import {defaultKitTypes, studyShortName} from 'utils/test-utils';
9+
import KitQueuePage from 'dsm/pages/kit-queue-page';
10+
import { KitTypeEnum } from 'dsm/component/kitType/enums/kitType-enum';
1011

1112
test.describe('Kits without Labels UI', () => {
1213
let welcomePage: WelcomePage;
@@ -21,16 +22,20 @@ test.describe('Kits without Labels UI', () => {
2122

2223
for (const study of studies) {
2324
test(`Page verifications @dsm @${study} @kit`, async ({page}) => {
24-
const expectedKitSelection = getExpectedKitSelection(study);
25+
const expectedKitSelection = defaultKitTypes(study);
2526
const { realm: expectedRealm } = studyShortName(study);
2627
await welcomePage.selectStudy(study);
2728

28-
const kitsWithoutLabelPage = await navigation.selectFromSamples<KitQueuePage>(SamplesNavEnum.QUEUE);
29-
await kitsWithoutLabelPage.waitForReady(expectedKitSelection);
30-
const kitsTable = kitsWithoutLabelPage.kitsWithoutLabelTable;
29+
const kitQueuePage = await navigation.selectFromSamples<KitQueuePage>(SamplesNavEnum.QUEUE);
30+
await kitQueuePage.waitForReady(expectedKitSelection);
31+
32+
expect(await kitQueuePage.getKitCheckbox(KitTypeEnum.SALIVA).isChecked()).toBeFalsy();
33+
expect(await kitQueuePage.getKitCheckbox(KitTypeEnum.BLOOD).isChecked()).toBeFalsy();
34+
35+
const kitsTable = kitQueuePage.kitsTable;
3136

3237
for (const kitType of expectedKitSelection) {
33-
await kitsWithoutLabelPage.selectKitType(kitType);
38+
await kitQueuePage.selectKitType(kitType);
3439
await expect(page.locator(kitsWithoutLabelPage.reloadKitListBtnXPath)).toBeEnabled();
3540
const rows = await kitsTable.getRowsCount();
3641
if (rows > 0) {

playwright-e2e/tests/dsm/kitUploadFlow/kit-upload-ui.spec.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {Navigation} from 'dsm/component/navigation/navigation';
55
import {StudyEnum} from 'dsm/component/navigation/enums/selectStudyNav-enum';
66
import {SamplesNavEnum} from 'dsm/component/navigation/enums/samplesNav-enum';
77
import KitUploadPage from 'dsm/pages/kitUpload-page/kitUpload-page';
8-
import {getExpectedKitSelection} from 'utils/test-utils';
8+
import {defaultKitTypes} from 'utils/test-utils';
99

1010
test.describe('Kits Upload UI', () => {
1111
let welcomePage: WelcomePage;
@@ -19,8 +19,8 @@ test.describe('Kits Upload UI', () => {
1919
});
2020

2121
for (const study of studies) {
22-
test(`Page verifications @dsm @${study} @kit`, async () => {
23-
const expectedKitSelection = getExpectedKitSelection(study);
22+
test(`Page verifications @dsm @${study} @kit`, async ({page}) => {
23+
const expectedKitSelection = defaultKitTypes(study);
2424
await welcomePage.selectStudy(study);
2525

2626
const kitUploadPage = await navigation.selectFromSamples<KitUploadPage>(SamplesNavEnum.KIT_UPLOAD);
@@ -30,6 +30,7 @@ test.describe('Kits Upload UI', () => {
3030
await expect.soft(kitUploadPage.browseBtn).toBeHidden();
3131
await kitUploadPage.selectKitType(kitType);
3232
await expect.soft(kitUploadPage.browseBtn).toBeVisible();
33+
await expect.soft(page.locator('app-filepicker .FilePicker--Text')).toHaveText('No File selected');
3334
await kitUploadPage.selectKitType(kitType); // un-check
3435
}
3536

playwright-e2e/tests/dsm/kitUploadFlow/kit-without-labels-ui.spec.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {StudyEnum} from 'dsm/component/navigation/enums/selectStudyNav-enum';
66
import {SamplesNavEnum} from 'dsm/component/navigation/enums/samplesNav-enum';
77
import KitsWithoutLabelPage from 'dsm/pages/kitsInfo-pages/kitsWithoutLabel-page';
88
import {KitsColumnsEnum} from 'dsm/pages/kitsInfo-pages/enums/kitsColumns-enum';
9-
import {getExpectedKitSelection, studyShortName} from 'utils/test-utils';
9+
import {defaultKitTypes, studyShortName} from 'utils/test-utils';
1010

1111
test.describe('Kits without Labels UI', () => {
1212
let welcomePage: WelcomePage;
@@ -21,7 +21,7 @@ test.describe('Kits without Labels UI', () => {
2121

2222
for (const study of studies) {
2323
test(`Page verifications @dsm @${study} @kit`, async ({page}) => {
24-
const expectedKitSelection = getExpectedKitSelection(study);
24+
const expectedKitSelection = defaultKitTypes(study);
2525
const { realm: expectedRealm } = studyShortName(study);
2626
await welcomePage.selectStudy(study);
2727

@@ -43,15 +43,13 @@ test.describe('Kits without Labels UI', () => {
4343
for (let i = 0; i < rows; i++) {
4444
const typeValue = (await kitsTable.getRowText(i, KitsColumnsEnum.TYPE)).trim();
4545
// Kits in different types are not mixed. Kits should be uploaded for the right type.
46-
expect.soft(typeValue).toStrictEqual(kitType);
46+
expect(typeValue).toStrictEqual(kitType);
4747
const shortId = (await kitsTable.getRowText(i, KitsColumnsEnum.SHORT_ID)).trim();
4848
expect(shortId?.length).toBeTruthy();
4949
const realm = (await kitsTable.getRowText(i, KitsColumnsEnum.DDP_REALM)).trim();
5050
expect(realm).toStrictEqual(expectedRealm);
5151
}
5252
}
53-
54-
expect(test.info().errors).toHaveLength(0);
5553
})
5654
}
5755
})

playwright-e2e/utils/test-utils.ts

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -274,18 +274,19 @@ export function studyShortName(study: StudyEnum): { shortName: string | null; re
274274
return { shortName, realm, collaboratorPrefix };
275275
}
276276

277-
export function getExpectedKitSelection(study: StudyEnum): KitTypeEnum[] {
278-
let types = [KitTypeEnum.SALIVA, KitTypeEnum.BLOOD];
279-
switch (study) {
280-
case StudyEnum.PANCAN:
281-
types = types.concat([KitTypeEnum.STOOL]);
282-
break;
283-
case StudyEnum.RGP:
284-
types = [KitTypeEnum.BLOOD, KitTypeEnum.BLOOD_AND_RNA];
285-
break;
286-
}
287-
return types;
288-
}
277+
export function isCMIStudy(study: StudyEnum): boolean {
278+
return (study === StudyEnum.ANGIO) ||
279+
(study === StudyEnum.BRAIN) ||
280+
(study === StudyEnum.ESC) ||
281+
(study === StudyEnum.MBC) ||
282+
(study === StudyEnum.OSTEO) ||
283+
(study === StudyEnum.PANCAN) ||
284+
(study === StudyEnum.PROSTATE);
285+
}
286+
287+
export function isPECGSStudy(study: StudyEnum): boolean {
288+
return (study === StudyEnum.OSTEO2) || (study === StudyEnum.LMS);
289+
}
289290

290291
export function shuffle(array: any[]): any[] {
291292
for (let i = array.length - 1; i > 0; i--) {
@@ -300,3 +301,16 @@ export async function toHaveScreenshot(page: Page, locator: Locator | string, na
300301
const loc = typeof locator === 'string' ? page.locator(locator) : locator;
301302
await expect.soft(loc).toHaveScreenshot(name);
302303
}
304+
305+
export function defaultKitTypes(study: StudyEnum): KitTypeEnum[] {
306+
let types = [KitTypeEnum.SALIVA, KitTypeEnum.BLOOD];
307+
switch (study) {
308+
case StudyEnum.PANCAN:
309+
types = types.concat([KitTypeEnum.STOOL]);
310+
break;
311+
case StudyEnum.RGP:
312+
types = [KitTypeEnum.BLOOD, KitTypeEnum.BLOOD_AND_RNA];
313+
break;
314+
}
315+
return types;
316+
}

0 commit comments

Comments
 (0)