赛普拉斯测试 - 将本地存储中的令牌与剪贴板中存储的令牌进行比较
Cypress testing - compare token from localStorage to token stored in clipboard
我有一个按钮可以将令牌从 localStorage 复制到剪贴板,我想将 localStorage 的令牌与剪贴板中的令牌进行比较,以检查令牌是否被正确复制。
我的代码:
cy.get('.copy-to-clipboard').click();
cy.window().its('navigator.clipboard').invoke('readText')
.should('equal', localStorage.getItem(accessTokenKey));
这是我唯一的想法,它有问题并且没有比较正确的值。
不幸的是,Cypress 还没有原生 copy/paste 支持,但有一些解决方法,例如:
1.第一条建议
cy.window().then((win) => {
win.navigator.clipboard.readText().then((text) => {
expect(text).to.eq('your copied text');
});
});
2。第二个建议:
cy.window().its('navigator.clipboard')
.invoke('readText').should('equal', 'copied text')
3。第三个建议,使用依赖clipboardy
首先安装依赖:`npm i -D clipboardy``
在你的 plugins/index.js 文件中输入:
const clipboardy = require('clipboardy');
module.exports = ( on ) => {
on('task', {
getClipboard () {
return clipboardy.readSync();
}
});
};
然后在你的测试中使用:
cy.task('getClipboard').should('contain', 'test');
也许同步和异步代码的混合是问题所在。
修复尝试
cy.get('.copy-to-clipboard')
.click()
.then(() => { // defer until click finishes
cy.window().its('navigator.clipboard').invoke('readText')
.should('equal', localStorage.getItem(accessTokenKey))
})
或使.should()
重试
cy.get('.copy-to-clipboard').click()
const accessTokenKey = localStorage.getItem(accessTokenKey)
cy.window().then(win => {
cy.wrap(win.navigator.clipboard.readText()) // on retry repeat readText
.should('equal', accessTokenKey)
})
我有一个按钮可以将令牌从 localStorage 复制到剪贴板,我想将 localStorage 的令牌与剪贴板中的令牌进行比较,以检查令牌是否被正确复制。
我的代码:
cy.get('.copy-to-clipboard').click();
cy.window().its('navigator.clipboard').invoke('readText')
.should('equal', localStorage.getItem(accessTokenKey));
这是我唯一的想法,它有问题并且没有比较正确的值。
不幸的是,Cypress 还没有原生 copy/paste 支持,但有一些解决方法,例如:
1.第一条建议
cy.window().then((win) => {
win.navigator.clipboard.readText().then((text) => {
expect(text).to.eq('your copied text');
});
});
2。第二个建议:
cy.window().its('navigator.clipboard')
.invoke('readText').should('equal', 'copied text')
3。第三个建议,使用依赖clipboardy
首先安装依赖:`npm i -D clipboardy``
在你的 plugins/index.js 文件中输入:
const clipboardy = require('clipboardy');
module.exports = ( on ) => {
on('task', {
getClipboard () {
return clipboardy.readSync();
}
});
};
然后在你的测试中使用:
cy.task('getClipboard').should('contain', 'test');
也许同步和异步代码的混合是问题所在。
修复尝试
cy.get('.copy-to-clipboard')
.click()
.then(() => { // defer until click finishes
cy.window().its('navigator.clipboard').invoke('readText')
.should('equal', localStorage.getItem(accessTokenKey))
})
或使.should()
重试
cy.get('.copy-to-clipboard').click()
const accessTokenKey = localStorage.getItem(accessTokenKey)
cy.window().then(win => {
cy.wrap(win.navigator.clipboard.readText()) // on retry repeat readText
.should('equal', accessTokenKey)
})