Skip to content

Commit 3452bbf

Browse files
committed
Use asserts to clean up control flow
1 parent 4bdca16 commit 3452bbf

File tree

1 file changed

+19
-12
lines changed
  • typescript/packages/jumble/integration

1 file changed

+19
-12
lines changed

typescript/packages/jumble/integration/utils.ts

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,7 @@ const RECORD_SNAPSHOTS = false;
1515
const SNAPSHOTS_DIR = join(Deno.cwd(), "test_snapshots");
1616
console.log("SNAPSHOTS_DIR=", SNAPSHOTS_DIR);
1717

18-
// Helper function to assert, take screenshot and snapshot HTML
19-
export async function assertAndSnapshot(
20-
condition: unknown,
21-
message: string,
22-
page?: Page | void,
23-
snapshotName?: string,
24-
): Promise<void> {
25-
assert(condition, message);
26-
18+
async function captureDetails(page: Page, snapshotName: string) {
2719
if (RECORD_SNAPSHOTS && page && snapshotName) {
2820
ensureDirSync(SNAPSHOTS_DIR);
2921
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
@@ -38,6 +30,21 @@ export async function assertAndSnapshot(
3830
console.log(`Snapshot saved: ${filePrefix}`);
3931
}
4032
}
33+
// Helper function to assert, take screenshot and snapshot HTML
34+
export function assertAndSnapshot(
35+
condition: unknown,
36+
message: string,
37+
page?: Page | void,
38+
snapshotName?: string,
39+
): asserts condition is
40+
& NonNullable<unknown>
41+
& (boolean | number | string | object) {
42+
assert(condition, message);
43+
44+
if (RECORD_SNAPSHOTS && page && snapshotName) {
45+
captureDetails(page, snapshotName);
46+
}
47+
}
4148

4249
export const sleep = (ms: number) =>
4350
new Promise((resolve) => setTimeout(resolve, ms));
@@ -46,14 +53,14 @@ export async function tryClick(
4653
el?: ElementHandle | null,
4754
page?: Page,
4855
): Promise<void> {
49-
await assertAndSnapshot(
50-
el !== null && el !== undefined,
56+
assertAndSnapshot(
57+
el,
5158
"Element does not exist or is not clickable",
5259
page,
5360
"try_click_element",
5461
);
5562

56-
await el!.click();
63+
await el.click();
5764
}
5865

5966
export const login = async (page: Page) => {

0 commit comments

Comments
 (0)