
croc-web 如何运行 Playwright E2E 测试验证 CLI 与浏览器互传【免费下载链接】crocEasily and securely send things from one computer to another :crocodile: :package:项目地址: https://gitcode.com/GitHub_Trending/cr/croc修改了 croc web 客户端web/下的 React/Vite 代码或 Go 侧协议代码之后需要确认一件事真实的crocCLI 和浏览器页面之间还能不能正常互传文件。仓库在web/e2e/下自带一套 Playwright E2E 测试它会编译出真实的croc与croc-web二进制在临时端口上拉起一个隔离的本地 relay 和嵌入式服务器再用真实浏览器页面驱动 CLI 进程完成传输并逐字节核对收发内容。这套 E2E 验证了哪些方向根据 web/README.mdPlaywright 套件按字节逐一验证五种传输方向CLI → WebWeb → CLIWeb → WebCLI stored → WebWeb stored → CLI传输类测试使用的夹具是三个模式生成的文件alpha.bin、beta.bin和空文件empty.dat见 transfers.spec.ts验证方式有两层内容核对下载或 CLI 落盘后的每个文件都与夹具缓冲区做逐字节比较状态核对Web 端收到时断言出现All files received and verified接收方或All files arrived safely发送方文本传输分别断言Text arrived safely与Text received and verified。stored 方向还会验证消费语义Web 端下载完成后面板显示All files received and verified; stored ciphertext removed再次打开同一加密链接会看到expired or has no downloads remaining。测试进程使用隔离的CROC_CONFIG_DIR与存储目录每个测试在自己的输出目录下建独立配置目录不会读取或修改你本机已记住的 croc 设置。准备条件在仓库的web/目录下操作。需要 Node/npm跑 npm 脚本与 Playwright和 Go 工具链测试堆栈会用go build编译两个二进制见 stack.mjs。cd web npm install npx playwright install chromiumnpx playwright install chromium只需执行一次用于安装套件使用的浏览器。关于端口playwright.config.ts 会在运行时通过监听127.0.0.1:0自动分配 6 个临时端口5 个 relay 端口 1 个服务器端口无需手动指定。如果想固定端口或产物名可以设置环境变量CROC_E2E_RELAY_PORTS逗号分隔、CROC_E2E_VITE_PORT、CROC_E2E_BINARY_NAME不设置时产物名为croc-vitePort。运行测试cd web npm run test:e2e对照 package.jsontest:e2e实际是npm run embed playwright test两段各有作用npm run embed构建 WASM 与 Vite 客户端把产物复制到未提交被忽略的src/webassets/dist目录croc-web通过 Go embed 打包它。已部署的二进制不依赖该目录但它必须是本次编译产物测试才验证的是当前代码。playwright test由webServer配置自动启动node e2e/stack.mjs等http://127.0.0.1:vitePort就绪后再跑用例reuseExistingServer为false每次运行都会重新拉起整套环境。stack.mjs 按以下顺序搭建测试环境创建web/.e2e/目录并清空旧的 store 目录从仓库根目录执行go build -o web/.e2e/croc-port ..再从../cmd/croc-web构建web/.e2e/croc-port-web启动隔离 relaycroc --pass pass123 relay --host 127.0.0.1 --ports 5个临时端口等待第一个端口可 TCP 连接启动嵌入式服务器croc-web --pass pass123 --relays 127.0.0.1 --ports 同上 --store-dir web/.e2e/croc-port-store --store-min-free 1B 127.0.0.1:vitePort轮询GET /healthz直到返回成功。服务器带--store-dir启动因此 direct 与 stored 两种模式在同一套环境里都能测。用例本身transfers.spec.ts在浏览器页面上先展开 settings 面板把 WebSocket gateway 填为/ws、填入 relay 密码pass123确认 CLI relay 地址回填正确才开始传输。每个 CLI 子进程统一使用这些参数--relay 127.0.0.1:端口 --relay6 --pass pass123 --yes --overwrite --ignore-stdin --disable-clipboard并通过CROC_SECRET环境变量传入 croc code、通过CROC_CONFIG_DIR指向测试输出目录下的隔离配置目录。结果判定与失败产物运行使用linereporterworkers: 1且fullyParallel: false单条测试超时 90 秒expect超时 20 秒webServer启动超时 120 秒结果输出在web/.e2e/test-results/配置了trace: retain-on-failure失败时会保留 trace 供回放清理是自动的stack.mjs 在退出时删除本次构建的两个二进制和 store 目录global-teardown.ts 还会再删一次.e2e/binary、.e2e/binary-web和.e2e/binary-store。测试只写入web/.e2e/目录除此之外不修改仓库内容。如果某条用例失败先看 line reporter 里该用例断言的具体文案是All files arrived safely没出现还是字节比对不一致再到.e2e/test-results/取对应 trace。边界说明套件全部走127.0.0.1不涉及公网 relayrelay 密码pass123是测试环境内约定值。套件针对当前主流桌面浏览器evergreen desktop browsersCLI 侧与 Web 侧的协议操作由本仓库的 Go 包编译成 WASM所以这条测试同时覆盖了 WASM 编译产物与原生二进制的互操作。更完整的本地检查清单见 web/README.mdnpm test单元、npm run test:e2e、npm run typecheck、make build-web以及仓库根的go test ./...E2E 是其中唯一真实跑通 CLI 与浏览器互传的一项。【免费下载链接】crocEasily and securely send things from one computer to another :crocodile: :package:项目地址: https://gitcode.com/GitHub_Trending/cr/croc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考