Weboldal keresés

typescript - Playwright nem tud hitelesíteni a Firebase-hez a tárolási állapot használatával


A Playwright keretrendszert nulláról állítom be, és megpróbálom újrahasználni az autentikációt a Playwright storageState segítségével, és problémába ütköztem, amikor a tesztek az autentikáció próbálkozásakor megbuknak.

  1. Van egy telepítőfájl bejelentkezéssel, az állapot lekérésével és megőrzésével a tárolásban.

  1. Van egy konfigurációs fájl teszttel, megpróbálva navigálni például a '/home' oldalra, de ehelyett a '/login' oldalon ragadt, nyilvánvalóan nem hitelesítve.

Beállítottam a tárolási állapot átadását a test.use() segítségével, és globálisan a playwright.config.ts fájlban a storageState kulccsal. Mi lehet a probléma? Hiányzik valami fontos?

Az autentikációs specifikációm így néz ki:

    const loginPage = new LoginPage(page);

    await loginPage.goto();
    await loginPage.login({
        email: ENV.EMAIL,
        password: ENV.PASSWORD
    });

    await expect(page).toHaveURL('/home')

    await page.waitForLoadState('domcontentloaded');

    console.log(await page.context().storageState());

    await page.context().storageState({ path: STORAGE_STATE });

És a teszt alapvetően nem más, mint a navigálás a '/home' oldalra és az URL ellenőrzése.

Azt gondoltam, talán valamit kihagyok a sütik kapcsán. Fontos megjegyzés: Az engedélyezéshez Firebase token-t használunk, lehet, hogy ez a tárolási lépés egyszerűen nem elég a bejelentkezéshez?

Válasz #1

A Firebase nem sütiket használ az autentikációs állapot kezelésére, hanem a böngésző IndexedDB-jét használja. A Playwright jelenleg csak sütiket tárol, amikor a böngésző „állapotának” mentéséről és visszaállításáról van szó. Tehát a Playwright által javasolt módszer, a storageState használata a bejelentkezések gyorsítótárazására, nem fog működni a Firebase-szel.

2025 januárja szerint van egy nyitott probléma a Playwrighttal kapcsolatban (lásd: https://github.com/microsoft/playwright/issues/11164). A megoldások (az adott problémánál) azt javasolják, hogy a böngésző IndexedDB API-it használjuk, valamint néhány közzétett Firebase részletet, hogy manuálisan elmentsük/visszaállítsuk az IndexedDB állapotát.