@dfinity/internet-identity-playwright

中文文档
3.0.0发布于 2026/02/11Apache-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 7541

一个Playwright库来简化互联网身份认证在E2E测试中的整合.

中文使用文档
文档目录14 节
  1. 导 言
  2. * 安装
  3. 使用量
  4. 1. 进口固定设备
  5. 2. 撰写测试
  6. 3. 等待互联网身份(可选)
  7. 4. 运行测试
  8. 💁‍♂️️ 提示技巧( T)
  9. 示例测试
  10. 本地运行测试
  11. 本地运行 Captcha 测试
  12. 本地运行所需的密码测试
  13. * 限制
  14. 社区

互联网身份剧作家

A 类 剧作家 库,以简化集成 互联网身份 e2E测试中的认证.


Internet Computer portal GitHub CI Checks Workflow Status GitHub CI Tests Workflow Status

导 言

这个寄存器提供了Playwright固定装置,旨在协助开发者利用互联网身份为dApps创建端到端(E2E)测试. 这些预先构建的情景使得开发者能够无缝地整合认证流,包括身份的创建和再利用,而不需要自己执行这些流.

* 安装

# with npm
npm install --save-dev @dfinity/internet-identity-playwright
# with pnpm
pnpm add --save-dev @dfinity/internet-identity-playwright
# with yarn
yarn add -D @dfinity/internet-identity-playwright

使用量

要使用互联网身份游戏机固定装置,请遵循这些步骤:

1. 进口固定设备

在您的 Playwright 测试文件中, 导入此库提供的设置 .

import {testWithII} from '@dfinity/internet-identity-playwright';

2. 撰写测试

使用测试中的扩展定着来进行认证流 .

[注] 这个 signIn() 方法可以自动检测这是第一次的密码流还是现有的密码流,为您处理复杂问题. 也值得注意的是,它总是试图再利用在Playwright会话中创建的同一种默认身份,以确保所提供的身份可以复制.

testWithII('should sign-in with a user', async ({page, iiPage}) => {
  await page.goto('/');

  await iiPage.signIn();
});

这个 iiPage 对象代表您应用程序中的页面,该页面包含以互联网身份启动认证流程的行动呼吁.

默认情况下, 固定符会搜索属性识别的按钮 [data-tid=login-button]。您可以通过提供自己的选择器来自定义此行为.

const loginSelector = '#login';

testWithII('should sign-in with a user', async ({page, iiPage}) => {
  await page.goto('/');

  await iiPage.signIn({passkey: {selector: loginSelector}});
});

当首次创建出新的密码时,身份名默认被设定为"Test". 您可以使用参数自定义此行为或创建其他账户 account。 。 。 .

[注] 创建账户需要在Playwright会话中首次签名.

const loginSelector = '#login';

testWithII('should sign-in with a user', async ({page, iiPage}) => {
  await page.goto('/');

  await iiPage.signIn();

  await page.locator('#logout').click();

  await iiPage.signIn({passkey: {account: 'Hello World'}});
});

3. 等待互联网身份(可选)

你可能会遇到一些情景,即你对本地复制品进行测试时,与你的测试同时开始,通常在将测试自动化时进行。 图书馆还揭露了一个固定的,让你等待互联网身份的准备.

例如,您可以提供本地复制的 URL 和 Internet Ident 的 ID :

testWithII.beforeEach(async ({iiPage, browser}) => {
  const url = 'http://127.0.0.1:4943';
  const canisterId = 'rdmx6-jaaaa-aaaaa-aaadq-cai';

  await iiPage.waitReady({url, canisterId});
});

该函数还接受一个可选的超时参数来指定该函数需要等多久才能被挂载,默认值为60000毫秒.

testWithII.beforeEach(async ({iiPage, browser}) => {
  const url = 'http://127.0.0.1:4943';
  const canisterId = 'rdmx6-jaaaa-aaaaa-aaadq-cai';
  const timeout = 30000;

  await iiPage.waitReady({url, canisterId, timeout});
});

4. 运行测试

照常运行您的 Playwright 测试 .

npx playwright test

💁‍♂️️ 提示技巧( T)

示例测试

您可以在以下文件中找到示例测试 : 登录. spec.ts。 。 。 .

本地运行测试

为了在当地进行这些测试,采取以下步骤:

  1. 安装容器运行时间 :

确保您在机器上安装了最新的容器运行时间, 例如 夹克 或者说 鲍德曼。 。 。 .

该套房默认使用多克. 如果使用Podman,请更新模拟器配置 演示/juno.config.mjs数字 :

emulator: {
  runner: {
    type: "podman"
  },
  satellite: {}
}
  1. 安装朱诺的 CLI :
npm i -g @junobuild/cli
  1. 启动模拟器 :

导航到 演示 目录并启动环境 :

cd demo
juno emulator start
  1. 设置环境 :

如果这是您首次在本地运行测试, 您需要配置演示应用程序的后端, 通过授权您的 CLI 操作演示的卫星( canister) 并应用其后端配置 :

juno login --emulator --mode development
juno config apply --mode development
  1. 运行测试 :

返回根目录并执行测试 :

npm run e2e

本地运行 Captcha 测试

默认测试套件可以验证使用互联网身份而无需Captcha要求. 要测试有 Captcha 的流量, 请在 demo 目录 :

docker compose -f docker-compose.captcha.yml up

然后,导航到根目录并运行专用测试:

npm run e2e:captcha

本地运行所需的密码测试

默认测试套件验证了最新的"互联网身份"的使用,该套件并不要求用户完成特定步骤来创建密码. 要测试需要密码创建的流程, 请运行以下命令: demo 目录 :

docker compose -f docker-compose.passkey.yml up

然后,导航到根目录并运行专用测试:

npm run e2e:passkey

* 限制

目前,在Playwright有能力的情况下,无法执行库的固定装置 装入已认证状态。 Playwright 目前不支持索引DB中的此类功能。 这一限制在《公约》中加以跟踪 GitHub 第11164期 (中文(简体) )。 。 。 .

虽然技术上可以使用本地存储而不是索引DB,但这种方法一般不被劝阻,因为它没有反映身份如何被存储在浏览器中. 我们倾向于遵守测试的最佳做法,以确保最准确地模拟现实世界的情况.

社区

版本与发布记录

@dfinity/internet-identity-playwright 共发布 10 个版本,首次发布于 2024/06/24;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.0.0latest2026/02/118 个月前
3.0.0-next-2026-02-02next2026/02/029 个月前
3.0.0-next-2026-01-312026/01/319 个月前
2.0.02025/05/141.5 年前
0.0.52025/02/171.7 年前
0.0.42024/10/252 年前

关于 @dfinity/internet-identity-playwright 的常见问题

@dfinity/internet-identity-playwright 是什么?

一个Playwright库来简化互联网身份认证在E2E测试中的整合.

如何安装 @dfinity/internet-identity-playwright?

在项目目录运行 npm install @dfinity/internet-identity-playwright,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@playwright/test(^1.52.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@dfinity/internet-identity-playwright 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dfinity/internet-identity-playwright 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@dfinity/internet-identity-playwright 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dfinity/internet-identity-playwright 可以商用吗?

@dfinity/internet-identity-playwright 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@dfinity/internet-identity-playwright 的下载量有多少?

根据 npm 官方下载统计,@dfinity/internet-identity-playwright 在 2026/10/12 – 2026/11/10 这 30 天内被下载 7,541 次,日均约 251 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dfinity/internet-identity-playwright 还在维护吗?

最新版本 3.0.0 发布于 2026/02/11(8 个月前);至今共发布 10 个版本,其中过去 12 个月发布了 3 个;首次发布于 2024/06/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。