简要概述
您需要生成一个有效的会话令牌并将其存储为 Cookie。这允许您的端到端测试访问需要身份验证的路由,而无需手动登录。此方法适用于基于凭证和 OAuth 的身份验证。
前言
在本指南中,我们将使用 Playwright 作为我们的端到端测试框架,但这些概念同样适用于其他框架,如 Cypress。
为了简单起见,我们将使用基于凭证的身份验证示例。然而,相同的原则也适用于 OAuth 提供者。
此外,我们使用 SQLite 数据库进行演示。请根据您的设置调整数据库交互(例如,表名、列类型)。
生成会话令牌
为了模拟已验证的会话,我们需要使用 BETTER_AUTH_SECRET
生成一个签名的会话令牌。此令牌将用于会话 Cookie 中。
插入测试数据
我们希望保持测试用户的静态,以避免在测试期间创建多个用户。如果测试用户、账户和会话尚未存在,则将其插入数据库。为简单起见,我们使用 0
作为所有主键的唯一 ID。
存储会话
将签名的令牌存储为 JSON 文件中的 Cookie,以便在测试框架中使用。不要忘记对 Cookie 值进行 encodeURIComponent
编码。
在测试中使用会话
在您的端到端测试中加载存储的会话,以访问受保护的路由,而无需登录。以下示例使用 Playwright,但这可以适应任何支持 Cookie 注入的测试库(例如,Cypress)。