@e2e-dev/web (英语)
e2e 没有自己的引擎:每个目标都命名驱动引擎
这个包是浏览器用的 它执行公众
e2e/engine 合同,所以一个设备或桌面引擎插件插入到同一个
也没有任何特权.
安装
npm install --save-dev e2e @e2e-dev/web
此软件包取决于 playwright-core 被钉在一个准确的版本,所以
引擎总是运行 Playwright 它被测试。 取决于应用程序
在 Playwright 上保存自己的副本; 两人只共享浏览器缓存
当他们的版本匹配.
import type { E2EConfig } from 'e2e';
import { web } from '@e2e-dev/web';
export default {
targets: [{ name: 'web', engine: web(), app: { url: 'http://localhost:3000' } }],
} satisfies E2EConfig;
目标宣布应用;引擎只驱动. 目标 app
带 url (基础 URL) app.open() 打开; 需要在 web() 目标,
command 跑道在跑道前开始 跑道后停止,
与 readyUrl 到民意调查,默认 url, (中文(简体) ), environment (单位:千美元)test, (中文(简体) ), staging, (中文(简体) ),
production;从宿主那里推断的 identity (稳定的缓存和
当来源为平时,会话键. web({ url }) 和另一个老人
应用程序选项是 INVALID_CONFIG目标 app.url 是一个 browser
目标,所以测试可以 requires: ['browser']。浏览器选项:
browser (单位:千美元)chromium, (中文(简体) ), firefox, (中文(简体) ), webkit; 默认 chromium; 或 一个
BrowserProvider 租赁主机浏览器,见下文), viewport
(单位:千美元){ width, height }; 默认为 1280x720, testIdAttribute (属性)
getByTestId 和一个节点的 testId 已读; 默认 data-testid, (中文(简体) ), userAgent
(单位:千美元) User-Agent 每一个尝试发出和 navigator.userAgent 报告,
locale 财务报告和审定财务报表 timezoneId (语言和时区 每一次尝试都进入,
例如 de-DE 财务报告和审定财务报表 Europe/Berlin, (中文(简体) ), colorScheme 财务报告和审定财务报表 reducedMotion (单位:千美元)
prefers-color-scheme 财务报告和审定财务报表 prefers-reduced-motion 每页报告,来自
第一次油漆; browser.emulateMedia 以试验改变他们, initScripts (每份文件都标注)
运行在页面本身之前),并且
connect 附加到 CDP 上的远程浏览器上, 而不是启动本地
一个.
附加到远程浏览器( A)connect(中文(简体) )
设定 connect.cdpEndpoint 附加在 Chrome DevTools 协议上
而不是发射 解药是响起的,在工人的电话里,在工人的电话里
启动任何发现会话的尝试,所以主机浏览器
结束点为每个运行提供 —— 云会话 URL 在
配置负载——每次需要解决. 解决者收到一个
AbortSignal 当它或企图被取消或超过时
预算; 之后连接的浏览器是脱去的, 从未使用 。 CDP 随附
只有铬,而处理引擎会解析会话,没有
关闭主机拥有的远程进程.
engine: web({
connect: { cdpEndpoint: async () => acquireCloudBrowserSession() },
});
运输回收,加 connect.reconnectEndpoint(signal)选择
输入远程浏览器的持续默认上下文. cdpEndpoint 接下来
为每次尝试,包括复试,提供新的专用浏览器;
reconnectEndpoint 断开后必须返回同一浏览器。 这个
引擎验证默认上下文 ID 和活动页面目标 ID, 清除 stale
引用, 绝不重复已发送的操作 。 缺少目标失败
尝试。 主机在清理后拥有删除远程浏览器.
此模式不支持 headers, (中文(简体) ), basicAuth, (中文(简体) ), userAgent, (中文(简体) ), locale, (中文(简体) ), timezoneId,上下文重设,或会话
州取并还. 重新连接后恢复录制, 但有一个片段
断开时丢失的空格仍然无法使用。 见
剧作家参考
寿命周期和所有权合同.
租赁主机浏览器( U)browser(中文(简体) )
connect 没有生命周期: 没有告诉主机何时删除浏览器
它提供。 传出 a BrowserProvider 作为 browser 而不是发动机
需要浏览器时请求浏览器,当其范围结束时还给浏览器,
在每一个退出路径. scope: 'worker' (默认)每个浏览器租赁一个
工间 prepare 释放他们 finish; 浏览器的工人
放弃租赁 替换本身. scope: 'attempt' 租赁新浏览器
每个 startAttempt 然后放进去 endAttempt,通过
租赁费 reconnectEndpoint 在运输量下降之后
connect.reconnectEndpoint提供者是指铬并排除
connect; 包件中没有销售船. 见
主机浏览器 合同
以及一个通用会话的范例 API.
engine: web({
browser: {
name: 'hosted-browsers',
acquire: async (request) => ({ id: session.id, cdpEndpoint: session.cdpUrl }),
release: async (lease) => stopSession(lease.id),
},
});
这个 browser 固定图
引擎贡献 browser导航 路线 饼干 对话框 框架,
下载、键盘和鼠标,加 expect(browser).toHaveURL() 财务报告和审定财务报表
toHaveTitle() 财务报告和审定财务报表 toHaveClass()导入 test 从这个包得到它
键入; 运行时间相同 test 作为 e2e对.
import { test } from '@e2e-dev/web';
import { expect } from 'e2e';
test('signs in', async ({ app, screen, browser }) => {
await app.open('/login');
await screen.getByLabel('Email').fill('[email protected]');
await expect(browser).toHaveURL('/dashboard');
});
浏览器
每跑一次,在运行过程中,在运行后,一个缺失的浏览器都会被下载 测试在应用程序开始前收集:运行中的进展打印 日志中,运行的时钟仅在下载完成后开始,没有启动或 测试暂停 永远包括它。 工人推出所安装的浏览器.
在CI中,安装浏览器作为自己的步骤,因此成本是可见的,并且 可缓存 :
npx @e2e-dev/web install chromium --with-deps
它下载了 Playwright 版本的浏览器 此软件包的针
发动机的发射 在 pnpm 下,按名称运行本位 :
pnpm exec e2e-web install chromium --with-deps。 。 。 .
--with-deps 还安装系统库中缺少一个瘦小的容器图像.
文档
完整文档生活于 e2e.com/文档。 。 。 .