Skip to content
14 changes: 14 additions & 0 deletions srcEarnProtocol/app.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { expect } from '#earnProtocolFixtures';
import { step } from '#noWalletFixtures';
import { Page } from '@playwright/test';
import { expectDefaultTimeout, openPageTimeout } from 'utils/config';
import { Banners } from './banners';
import { Modals } from './modals';
import {
Expand Down Expand Up @@ -95,6 +96,19 @@ export class App {
await this.page.pause();
}

@step
async openPage() {
// Quadratic backoff: 3*n² seconds per retry → 3s, 12s, 27s, 48s, 75s
const retryIntervals = [1, 2, 3, 4, 5].map((n) => 3_000 * n * n);
await expect(async () => {
await this.page.goto('', { timeout: expectDefaultTimeout * 3 });
await this.waitForAppToBeStable();
}).toPass({
Comment thread
Copilot marked this conversation as resolved.
intervals: retryIntervals,
timeout: openPageTimeout,
});
}

@step
async waitForAppToBeStable() {
await expect(async () => {
Expand Down
23 changes: 3 additions & 20 deletions srcEarnProtocol/fixtures/noWallet.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { test as base } from '@playwright/test';
import { App } from '../app';
import { earnProtocolBaseUrl } from 'utils/config';
import { earnProtocolBaseUrl, openPageTimeout } from 'utils/config';

type MyFixtures = {
app: App;
Expand All @@ -11,9 +11,6 @@ export const test = base.extend<MyFixtures>({
async ({ page, context }, use) => {
const app = new App(page);

await app.page.goto('');

// Remove cookies banner
await context.addCookies([
{
name: 'analyticsCookie',
Expand All @@ -22,28 +19,14 @@ export const test = base.extend<MyFixtures>({
url: earnProtocolBaseUrl,
},
]);
// await app.waitForAppToBeStable();
// await app.page.reload();

// //
// console.log('=== earnProtocolBaseUrl: ', earnProtocolBaseUrl);
// //

// // Close 'Go to Beach Club' banner in staging
// // - This is working locally on prod too, but not in github runs
// if (earnProtocolBaseUrl.includes('staging')) {
// await app.page
// .locator('[class*="_floatingBannerContainer"]')
// .getByRole('button')
// .filter({ has: app.page.locator('svg[title="close"]') })
// .click();
// }
await app.openPage();

await use(app);

await app.page.close();
},
{ timeout: 50000 },
{ timeout: openPageTimeout + 5_000 },
],
});

Expand Down
8 changes: 3 additions & 5 deletions srcEarnProtocol/fixtures/withRealWalletArbitrum.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { metaMaskFixtures } from '@synthetixio/synpress/playwright';
import arbitrumRealWalletSetup from '../../utils/synpress/real-wallet-setup/arbitrumRealWallet.setup';
import { App } from '../app';
import { earnProtocolBaseUrl } from 'utils/config';
import { earnProtocolBaseUrl, openPageTimeout } from 'utils/config';

export const test = metaMaskFixtures(arbitrumRealWalletSetup).extend<{
app: App;
Expand All @@ -10,8 +10,6 @@ export const test = metaMaskFixtures(arbitrumRealWalletSetup).extend<{
async ({ page, context }, use) => {
const app = new App(page);

await app.page.goto('');

await context.addCookies([
{
name: 'analyticsCookie',
Expand All @@ -21,13 +19,13 @@ export const test = metaMaskFixtures(arbitrumRealWalletSetup).extend<{
},
]);

await app.waitForAppToBeStable();
await app.openPage();

await use(app);

await app.page.close();
},
{ timeout: 50000 },
{ timeout: openPageTimeout + 5_000 },
],
});

Expand Down
8 changes: 3 additions & 5 deletions srcEarnProtocol/fixtures/withRealWalletBase.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { metaMaskFixtures } from '@synthetixio/synpress/playwright';
import baseRealWalletSetup from '../../utils/synpress/real-wallet-setup/baseRealWallet.setup';
import { App } from '../app';
import { earnProtocolBaseUrl } from 'utils/config';
import { earnProtocolBaseUrl, openPageTimeout } from 'utils/config';

export const test = metaMaskFixtures(baseRealWalletSetup).extend<{
app: App;
Expand All @@ -10,8 +10,6 @@ export const test = metaMaskFixtures(baseRealWalletSetup).extend<{
async ({ page, context }, use) => {
const app = new App(page);

await app.page.goto('');

await context.addCookies([
{
name: 'analyticsCookie',
Expand All @@ -21,13 +19,13 @@ export const test = metaMaskFixtures(baseRealWalletSetup).extend<{
},
]);

await app.waitForAppToBeStable();
await app.openPage();

await use(app);

await app.page.close();
},
{ timeout: 50000 },
{ timeout: openPageTimeout + 5_000 },
],
});

Expand Down
8 changes: 3 additions & 5 deletions srcEarnProtocol/fixtures/withRealWalletHyperliquid.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { metaMaskFixtures } from '@synthetixio/synpress/playwright';
import hyperliquidRealWalletSetup from '../../utils/synpress/real-wallet-setup/hyperliquidRealWallet.setup';
import { App } from '../app';
import { earnProtocolBaseUrl } from 'utils/config';
import { earnProtocolBaseUrl, openPageTimeout } from 'utils/config';

export const test = metaMaskFixtures(hyperliquidRealWalletSetup).extend<{
app: App;
Expand All @@ -10,8 +10,6 @@ export const test = metaMaskFixtures(hyperliquidRealWalletSetup).extend<{
async ({ page, context }, use) => {
const app = new App(page);

await app.page.goto('');

await context.addCookies([
{
name: 'analyticsCookie',
Expand All @@ -21,13 +19,13 @@ export const test = metaMaskFixtures(hyperliquidRealWalletSetup).extend<{
},
]);

await app.waitForAppToBeStable();
await app.openPage();

await use(app);

await app.page.close();
},
{ timeout: 50000 },
{ timeout: openPageTimeout + 5_000 },
],
});

Expand Down
8 changes: 3 additions & 5 deletions srcEarnProtocol/fixtures/withRealWalletSonic.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { metaMaskFixtures } from '@synthetixio/synpress/playwright';
import sonicRealWalletSetup from '../../utils/synpress/real-wallet-setup/sonicRealWallet.setup';
import { App } from '../app';
import { earnProtocolBaseUrl } from 'utils/config';
import { earnProtocolBaseUrl, openPageTimeout } from 'utils/config';

export const test = metaMaskFixtures(sonicRealWalletSetup).extend<{
app: App;
Expand All @@ -10,8 +10,6 @@ export const test = metaMaskFixtures(sonicRealWalletSetup).extend<{
async ({ page, context }, use) => {
const app = new App(page);

await app.page.goto('');

await context.addCookies([
{
name: 'analyticsCookie',
Expand All @@ -21,13 +19,13 @@ export const test = metaMaskFixtures(sonicRealWalletSetup).extend<{
},
]);

await app.waitForAppToBeStable();
await app.openPage();

await use(app);

await app.page.close();
},
{ timeout: 50000 },
{ timeout: openPageTimeout + 5_000 },
],
});

Expand Down
8 changes: 3 additions & 5 deletions srcEarnProtocol/fixtures/withTestWalletArbitrum.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { metaMaskFixtures } from '@synthetixio/synpress/playwright';
import arbitrumSetup from '../../utils/synpress/test-wallet-setup/arbitrum.setup';
import { App } from '../app';
import { earnProtocolBaseUrl } from 'utils/config';
import { earnProtocolBaseUrl, openPageTimeout } from 'utils/config';

export const test = metaMaskFixtures(arbitrumSetup).extend<{
app: App;
Expand All @@ -10,8 +10,6 @@ export const test = metaMaskFixtures(arbitrumSetup).extend<{
async ({ page, context }, use) => {
const app = new App(page);

await app.page.goto('');

await context.addCookies([
{
name: 'analyticsCookie',
Expand All @@ -21,13 +19,13 @@ export const test = metaMaskFixtures(arbitrumSetup).extend<{
},
]);

await app.waitForAppToBeStable();
await app.openPage();

await use(app);

await app.page.close();
},
{ timeout: 50000 },
{ timeout: openPageTimeout + 5_000 },
],
});

Expand Down
8 changes: 3 additions & 5 deletions srcEarnProtocol/fixtures/withTestWalletBase.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { metaMaskFixtures } from '@synthetixio/synpress/playwright';
import baseSetup from '../../utils/synpress/test-wallet-setup/base.setup';
import { App } from '../app';
import { earnProtocolBaseUrl } from 'utils/config';
import { earnProtocolBaseUrl, openPageTimeout } from 'utils/config';

export const test = metaMaskFixtures(baseSetup).extend<{
app: App;
Expand All @@ -10,8 +10,6 @@ export const test = metaMaskFixtures(baseSetup).extend<{
async ({ page, context }, use) => {
const app = new App(page);

await app.page.goto('');

await context.addCookies([
{
name: 'analyticsCookie',
Expand All @@ -21,13 +19,13 @@ export const test = metaMaskFixtures(baseSetup).extend<{
},
]);

await app.waitForAppToBeStable();
await app.openPage();

await use(app);

await app.page.close();
},
{ timeout: 50000 },
{ timeout: openPageTimeout + 5_000 },
],
});

Expand Down
5 changes: 5 additions & 0 deletions utils/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ export const extremelyLongTestTimeout: number =
export const gigaTestTimeout: number =
baseUrl.includes('localhost') || baseUrl.includes('3000.csb.app') ? 400_000 : 360_000;

export const openPageTimeout: number =
earnProtocolBaseUrl.includes('localhost') || earnProtocolBaseUrl.includes('3000.csb.app')
? 400_000
: 360_000;

export const positionTimeout: number =
baseUrl.includes('localhost') || baseUrl.includes('3000.csb.app') ? 60_000 : 45_000;

Expand Down