mirror of
https://github.com/mempool/mempool.git
synced 2025-03-27 10:11:45 +01:00
* initial version of the update config script * fix duplicated content * update cypress ci settings * add workflow to run e2e tests when pushing * record cypress results to the dashboard * pull the cypress record key and project id from the secrets * add start-server-and-test to replace concurrently * replace concurrently with start-server-and-test * remove concurrently * add new cypress target to record * update cypress to 7.7.0 * add tests for signet * add tests for testnet * run tests on chrome and firefox * update test matrix: add edge and run firefox on container * fix copypasta * update docker image for firefox * fix task name again * fix edge tests task name * improve bisq tests * update workflow config * enable cypress debug logs * add a manual trigger for the e2e tests * add config:defaults target * use more of the GHA options * fix config command * add cypress-fail-on-console-error * upgrade cypress to v8.0.0 * add helper to wait for the loader skeleton to be gone * use skeleton waiter on the tests * remove manual test trigger * fix tv test when only one mempool block is available * add waiter for pagination * add extra steps to debug firefox launch issue * remove whoami step * Revert "upgrade cypress to v8.0.0" This reverts commit cb3ff7d906c2a2219d7e2b2c16a92c311e3f6817. * remove userinfo debug step * enable test retries in run mode * update proxy config to reduce ECONNRESET errors * add mock-socket dev dependency * add helpers to mock websockets and detect page idleness * stabilize mainnet tests * fix tv mode test on Liquid * add basic tests for the mainnet status page * cleanup mainnet tests * update bisq tests * update signet tests * update testnet tests * add initial support for parameterized websocket mocks * move testing dependencies to optionalDependencies * comment out mempool size check until the live updates are fixed * comment out tx regex test * update fixture for the new difficulty adjustment component * fix the assertions on the status page
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
// source: chrisp_68 @ https://stackoverflow.com/questions/50525143/how-do-you-reliably-wait-for-page-idle-in-cypress-io-test
|
|
export class PageIdleDetector
|
|
{
|
|
defaultOptions: Object = { timeout: 60000 };
|
|
|
|
public WaitForPageToBeIdle(): void
|
|
{
|
|
this.WaitForPageToLoad();
|
|
this.WaitForAngularRequestsToComplete();
|
|
this.WaitForAngularDigestCycleToComplete();
|
|
this.WaitForAnimationsToStop();
|
|
}
|
|
|
|
public WaitForPageToLoad(options: Object = this.defaultOptions): void
|
|
{
|
|
cy.document(options).should((myDocument: any) =>
|
|
{
|
|
expect(myDocument.readyState, "WaitForPageToLoad").to.be.oneOf(["interactive", "complete"]);
|
|
});
|
|
}
|
|
|
|
public WaitForAngularRequestsToComplete(options: Object = this.defaultOptions): void
|
|
{
|
|
cy.window(options).should((myWindow: any) =>
|
|
{
|
|
if (!!myWindow.angular)
|
|
{
|
|
expect(this.NumberOfPendingAngularRequests(myWindow), "WaitForAngularRequestsToComplete").to.have.length(0);
|
|
}
|
|
});
|
|
}
|
|
|
|
public WaitForAngularDigestCycleToComplete(options: Object = this.defaultOptions): void
|
|
{
|
|
cy.window(options).should((myWindow: any) =>
|
|
{
|
|
if (!!myWindow.angular)
|
|
{
|
|
expect(this.AngularRootScopePhase(myWindow), "WaitForAngularDigestCycleToComplete").to.be.null;
|
|
}
|
|
});
|
|
}
|
|
|
|
public WaitForAnimationsToStop(options: Object = this.defaultOptions): void
|
|
{
|
|
cy.get(":animated", options).should("not.exist");
|
|
}
|
|
|
|
private getInjector(myWindow: any)
|
|
{
|
|
return myWindow.angular.element(myWindow.document.body).injector();
|
|
}
|
|
|
|
private NumberOfPendingAngularRequests(myWindow: any)
|
|
{
|
|
return this.getInjector(myWindow).get('$http').pendingRequests;
|
|
}
|
|
|
|
private AngularRootScopePhase(myWindow: any)
|
|
{
|
|
return this.getInjector(myWindow).get("$rootScope").$$phase;
|
|
}
|
|
}
|