Skip to content

Web3Auth/web3auth-e2e-tests

Repository files navigation

web3auth-e2e-tests

AuthService - E2ETests DemoWalletService - E2ETests WalletService - E2ETests End-to-end testing for Torus products. Torus Web3Auth

Built With

Getting Started

Prerequisites

The following software are required:

  • nodejs : Download and Install Node JS from
    https://nodejs.org/en/download/

Installation

  1. Clone the repo using below URL
https://github.com/Web3Auth/web3auth-e2e-tests.git
  1. Navigate to folder and install npm packages using:
npm install
  1. For first time installation run below command to download required browsers
npm i -D @playwright/test
# install supported browsers
npx playwright install

Development

Scripts

Script Description
test --config=<test-dir>/index.config.ts --project=<chromium|firefox|webkit> Run tests in headless mode (no GUI, for CI) with feature specific config
test --config=<test-dir>/index.config.ts --project=<chromium|firefox|webkit> --headed Run tests in headed mode (with GUI, for development)
trace <path-to-trace.zip> Trace test results (for development)
test --config=index.config.ts --project=<chromium|firefox|webkit> Run tests in headless mode (no GUI, for CI) using global config
test --grep=@smoke --config=index.config.ts --project=<chromium|firefox|webkit> Run tests with tags @smoke using global config

Add a test to an existing test suite

Add a new file <name>.test.ts to the test suite's directory:

test.only("focus this test", async ({ page }) => {
  // Run only this test during development
});
test.skip("skip this test", async ({ page }) => {
  // This test is not run
});
test.serial("run tests in serial mode", async ({ page }) => {
  // This runs the below test in a serial mode
  test("scenario1", async ({ page }) => {});
  test("scenario2", async ({ page }) => {});
});

When you've done writing the test, change test.only to test to turn off focus mode.

Create a new test suite

Duplicate openloginV3/account-page/ rename and update the tests.

Status

OpenLogin

OpenLoginV4 Test Run OpenLoginV3 Test Run OpenLogin - Lighthouse

To view smoke run results, join discord.

Select elements

Prefer text or accessibility selectors:

await page.click("text=Welcome onboard");
await page.click('button:has-text("Get Started")');
await page.click('[aria-label="Continue with Facebook"]');
await page.click("xpath=.//div[text()='Login']");

See full list of selectors.

Framework Execution Pattern

alt text

Auth Service buildEnv: production, testing, staging mfaFactorsEnabled: all selected mfaFactorsMandatory: device, password, authenticator mandatory mfaLevel: none, mandatory network: sapphire devnet, sapphire mainnet, mainnet uxMode: popup, redirect logins: passwordless only

For the below combinations, we want to test if the login is successful or not. All random accounts in each combo case.

combo 1 - happy path (no mfa) - 30 mins

buildEnv: production mfaFactorsEnabled: all selected mfaFactorsMandatory: device, password, authenticator mandatory mfaLevel: none network: sapphire mainnet uxMode: redirect logins: passwordless only

combo 2 (start with mfaLevel: none, then change to mandatory - run twice, compare keys) - 2 hrs

buildEnv: testing mfaFactorsEnabled: all selected mfaFactorsMandatory: device, password, authenticator mandatory mfaLevel: mandatory network: sapphire devnet uxMode: popup logins: passwordless only

combo 3 (start with mfaLevel: mandatory, then recovery of mfa - run twice, compare keys) - 2 hrs

buildEnv: staging mfaFactorsEnabled: all selected mfaFactorsMandatory: device, password, authenticator mandatory mfaLevel: mandatory network: mainnet uxMode: redirect logins: passwordless only