Skip to content

Commit d4d80d4

Browse files
committed
fix: handle unnecessary wait if title is already on response
1 parent 0b23e80 commit d4d80d4

File tree

1 file changed

+31
-17
lines changed

1 file changed

+31
-17
lines changed

tests/govtool-frontend/playwright/lib/pages/outcomesPage.ts

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -374,25 +374,30 @@ export default class OutComesPage {
374374
}
375375

376376
async fetchOutcomeIdAndTitleFromNetwork(
377-
governanceActionId: string,
378-
governanceActionTitle: string
379-
) {
377+
governanceActionId?: string,
378+
governanceActionTitle?: string
379+
): Promise<{ governanceActionId: string; governanceActionTitle: string }> {
380380
let updatedGovernanceActionId = governanceActionId;
381381
let updatedGovernanceActionTitle = governanceActionTitle;
382+
382383
await this.page.route(
383384
"**/governance-actions?search=&filters=&sort=**",
384385
async (route) => {
385386
const response = await route.fetch();
386387
const data: outcomeProposal[] = await response.json();
387-
if (!governanceActionId) {
388-
if (data.length > 0) {
389-
const randomIndexForId = Math.floor(Math.random() * data.length);
390-
updatedGovernanceActionId =
391-
data[randomIndexForId].tx_hash +
392-
"#" +
393-
data[randomIndexForId].index;
388+
389+
if (!updatedGovernanceActionId && data.length > 0) {
390+
const randomIndex = Math.floor(Math.random() * data.length);
391+
updatedGovernanceActionId = `${data[randomIndex].tx_hash}#${data[randomIndex].index}`;
392+
}
393+
394+
if (!updatedGovernanceActionTitle) {
395+
const itemWithTitle = data.find((item) => item.title != null);
396+
if (itemWithTitle) {
397+
updatedGovernanceActionTitle = itemWithTitle.title;
394398
}
395399
}
400+
396401
await route.fulfill({
397402
status: 200,
398403
contentType: "application/json",
@@ -410,31 +415,40 @@ export default class OutComesPage {
410415
await route.continue();
411416
return;
412417
}
418+
413419
const data: outcomeMetadata = await response.json();
414-
if (!governanceActionTitle && data.data.title != null) {
420+
if (!updatedGovernanceActionTitle && data.data.title) {
415421
updatedGovernanceActionTitle = data.data.title;
416422
}
423+
417424
await route.fulfill({
418425
status: 200,
419426
contentType: "application/json",
420427
body: JSON.stringify(data),
421428
});
422429
} catch (error) {
430+
// Just return without handling the error
423431
return;
424432
}
425433
}
426434
);
427435

428-
const responsePromise = this.page.waitForResponse(
436+
const actionsResponsePromise = this.page.waitForResponse(
429437
"**/governance-actions?search=&filters=&sort=**"
430438
);
431-
const metadataResponsePromise = this.page.waitForResponse(
432-
"**/governance-actions/metadata?**"
433-
);
439+
434440

435441
await this.goto();
436-
await responsePromise;
437-
await metadataResponsePromise;
442+
await actionsResponsePromise;
443+
444+
const needMetadataForTitle = !updatedGovernanceActionTitle;
445+
const metadataResponsePromise = needMetadataForTitle
446+
? this.page.waitForResponse("**/governance-actions/metadata?**")
447+
: Promise.resolve(null);
448+
if (needMetadataForTitle) {
449+
await metadataResponsePromise;
450+
}
451+
438452
return {
439453
governanceActionId: updatedGovernanceActionId,
440454
governanceActionTitle: updatedGovernanceActionTitle,

0 commit comments

Comments
 (0)