我创建了一些自动测试来测试面向公众的API端点。有一个“测试数据创建”步骤,可以直接在我们的AWS环境中运行和创建数据(即,直接执行Lambda,将条目添加到数据库中)。这已集成到赛普拉斯中,并在package.json
中添加了一个包。要执行此操作,首先必须使用aws-sdk
,特别是assumerole
。当直接使用Node运行此过程时,它将运行并用~/.aws/credentials
,aws_access_key_id
和aws_secret_access_key
填充aws_session_token
。
一旦承担了这个角色,就可以运行“测试数据创建”,并创建用于测试的数据。
使用Node和Node环境,它可以正常工作并创建数据。
但是当它在赛普拉斯中运行时,它将失败。
这是我的plugins/index.js
:
const AWS = require('aws-sdk');
module.exports = (on, config) => {
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
sessionToken: process.env.AWS_SESSION_TOKEN,
region: process.env.AWS_REGION
});
return { on, config };
};
由于测试数据创建过程是异步的,因此我在support/commands.js
中添加了此异步命令:
const testDataCreation = require('test-data-creation');
Cypress.Commands.add("generateOrganisation", async () => {
await testDataCreation.generateOrganisation();
});
在我的测试中:
describe('Test', () => {
before(function () {
cy.generateOrganisation().then(response => response.organisationId).as("orgId");
});
it('should visit the page', function () {
cy.visit(`https://${this.orgId}.website.com/`);
cy.get('#cookie-box').should('have.class', 'my-cookie');
});
});
但是运行测试时,测试失败,并显示消息“ ConfigError:配置中缺少区域” 。当未正确设置AWS配置时,这是一条典型消息。这使我认为赛普拉斯无法使用假定的AWS角色正确运行测试。也许我做错了什么。我猜测它应该“正常工作”(例如如何使用Node运行测试数据创建脚本)。 赛普拉斯如何运行需要AWS凭证(即测试数据创建)的设置步骤?
答案 0 :(得分:0)
经过各种尝试寻找解决方案-结果非常简单。
这部分是不需要的。 assumerole
正在工作,赛普拉斯正在以“假定角色”运行,因此无需再次设置密钥。
const AWS = require('aws-sdk');
module.exports = (on, config) => {
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
sessionToken: process.env.AWS_SESSION_TOKEN,
region: process.env.AWS_REGION
});
return { on, config };
};