赛普拉斯为失败的测试添加上下文

Cypress adding context to failed tests

我想通过获取一些本地存储数据并记录下来,在每次失败时添加一些上下文......但我不太确定我该怎么做

在index.ts中我添加了

Cypress.on('fail', (error, runnable) => {})

然后我做了 const user = localStorage.getItem('user'); 并尝试记录它,但现在运气好.. 猜想我需要异步获取它但无法让它工作:/

使用.log()的同步版本。

我想在捕获失败事件之前队列停止 运行。

Cypress.on('fail', (error, runnable) => {
  const user = localStorage.getItem('user')
  Cypress.log({name: 'User', message: user})
})

it('', () => {
  localStorage.setItem('user', 'my-user')
  expect(1).to.eq(2)
})

我实际上是通过在我的 support/index.ts 文件中这样做来让它工作的...

Cypress.on('fail', (error) => {
  const asyncLocalStorage = {
    getItem(key) {
      return Promise.resolve().then(function () {
        return localStorage.getItem(key);
      });
    },
  };

  asyncLocalStorage.getItem('state').then((localStorageState) => {
    const state = JSON.parse(localStorageState);

    Cypress.log({
      name: error.name,
      message: error.message,
      consoleProps: () => ({
        'User Id': state?.user?.id,
        members: state?.members,
        message: error.message,
        stack: error.stack,
      }),
    });
  });

  throw error;
});