@ datashard/ snapshot
向 Cypress 添加 JSON 快照比较
QQ 打破更改QQ
- 与V3
readFileMaybe任务已删除, 我们现在依赖cy.fixture内部. - 上一个
SNAPSHOT_UPDATE环境/配置变量已更改为updateSnapshots
[危险] 这意味着之前的测试可能会被打破, 请在更新到此插件的最新版本之前确保测试通过 。 。 。 .
此当前发布将作为 3.0.0-beta如果我或我的雇主找到虫子 我会打开问题/PR来修复它们 如果有人找到虫子/Edgeases等 请打开一个问题.
安装
要求节点16或以上
npm i --save-dev @datashard/snapshot
导入
安装后, 您需要将以下导入添加到您的命令/ 支持文件
默认情况下, 这将是
cypress/support/e2e.js
require('@datashard/snapshot').regsiter()
这将注册一个新的命令 .snapshot(),用于创建和比较JSON快照.
配置
你可以通过 updateSnapshots 财务报告和审定财务报表 useFolders 作为选项 cypress.config.js 文件
或者,您也可以添加 snapshotUpdate 作为更新您快照的环境变量.
只是通过 --env updateSnapshots=true 当运行 Cypress 时.
使用量
如果添加得当, 此插件的使用相当简单, 只要添加 .snapshot() 以返回有效的 JSON.(即:. cy.wrap(中文(简体) )
正确添加时, 可以链条 .snapshot() 关闭 cy 函数类似 cy.wrap确保他们返回有效的JSON.
示例
describe("my test", () => {
it("works", () => {
cy.log("first snapshot");
cy.wrap({ foo: 42 }).snapshot("foo");
cy.log("second snapshot");
cy.wrap({ bar: 101 }).snapshot("bar");
});
});
此插件将保存您的快照为
// useFolders: false
cypress/fixtures/my-test__works__foo.json
cypress/fixtures/my-test__works__bar.json
// useFolders: true
cypress/fixtures/my-test/works/foo.json
cypress/fixtures/my-test/works/bar.json
// {fixtureFolder}/<Context>-<Describe>-<It>-<Name?>.json
// {fixtureFolder}/<Context>/<Describe>/<It>/<Name?>.json
通常会使用上述编码块的注释中提到的公约来保存快照,该注释由命名为Cypress测试步骤提供.
如果您要在同一块中拍摄多张快照, 需要将名称传递到快照函数, 但不选中 .
如果您在同一块有两个或两个以上快照, 下一个 将 在更新时总是覆盖上一个, 导致块中的第一快照失败 . 在运行您的测试时, 如果一个值改变, 它当然将不再匹配快照并丢出错误 .
这看起来是这样的:

当测试成功时, 它将会在日志中登录一个成功记录, 并让您知道文件保存到哪里, 相对于 Fixture 快照文件夹
