Playwright 无法使用存储状态向 Firebase 进行身份验证

问题描述 投票:0回答:1

我正在从头开始设置 Playwright 框架,并尝试在 Playwright 的帮助下重用身份验证

storageState
,当我的测试尝试身份验证失败时,我遇到了问题。

  1. 有一个用于登录、检索和保存存储状态的设置文件。

  1. 有一个带有测试的配置文件,尝试导航到例如'/home' 页面,但它卡在 '/login' 页面,显然没有经过身份验证。 enter image description here

我使用

test.use()
设置了存储状态传递,并使用
playwright.config.ts
键在
starageState
文件中全局设置了存储状态传递。 这里可能出了什么问题?我是不是错过了什么重要的事情?

我的身份验证规范如下所示:

    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 });

测试基本上只不过是导航到“/home”并验证 URL。

我在想也许我遗漏了一些关于饼干的东西。 重要提示:我们使用 Firebase 令牌进行授权,也许这个存储阶段不足以登录?

typescript firebase-authentication playwright playwright-test
1个回答
0
投票

Firebase 不使用 cookie 来管理身份验证状态,它使用浏览器的 IndexedDB。 Playwright 目前仅在保存和恢复浏览器“状态”时存储 cookie。 因此,Playwright 建议的使用

storageState
缓存登录的方法不适用于 Firebase。

Playwright 存在一个未解决的问题(截至 2025 年 1 月)(请参阅 https://github.com/microsoft/playwright/issues/11164)。 解决方法(在该问题中)建议使用浏览器的 IndexedDB API 以及一些有关 Firebase 的已发布详细信息来手动保存/恢复 IndexedDB 状态。

© www.soinside.com 2019 - 2024. All rights reserved.