Amazon web services 是否可以使用AWS assumerole运行Cypress测试?
我创建了一些自动化测试来测试面向公众的API端点。有一个测试数据创建步骤,它直接在AWS环境中运行和创建数据(即直接执行Lambdas,向数据库添加条目)。这被集成到Cypress中,并在package.json中添加了一个包 要执行此操作,首先需要使用Amazon web services 是否可以使用AWS assumerole运行Cypress测试?,amazon-web-services,automation,cypress,qa,Amazon Web Services,Automation,Cypress,Qa,我创建了一些自动化测试来测试面向公众的API端点。有一个测试数据创建步骤,它直接在AWS环境中运行和创建数据(即直接执行Lambdas,向数据库添加条目)。这被集成到Cypress中,并在package.json中添加了一个包 要执行此操作,首先需要使用aws sdk,特别是assumerole。当直接使用节点运行此进程时,它将运行并使用aws\u访问密钥\u id、aws\u密码\u访问密钥和aws\u会话\u令牌填充~/.aws/credentials 一旦承担了这个角色,就可以运行测试数据
aws sdk
,特别是assumerole
。当直接使用节点运行此进程时,它将运行并使用aws\u访问密钥\u id
、aws\u密码\u访问密钥
和aws\u会话\u令牌
填充~/.aws/credentials
一旦承担了这个角色,就可以运行测试数据创建,并为测试创建数据
通过使用节点和节点环境,可以正确工作,并创建数据
但当这在Cypress中运行时,它失败了
这是我的插件/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 };
};
const testDataCreation = require('test-data-creation');
Cypress.Commands.add("generateOrganisation", async () => {
await testDataCreation.generateOrganisation();
});
由于测试数据创建过程是异步的,我在support/commands.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 };
};
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:Missing region in config”。这是AWS配置设置不正确时的典型消息。这使我认为Cypress无法使用假定的AWS角色正确运行测试。或者我做错了什么。我猜想它应该“正常工作”(比如如何使用Node运行测试数据创建脚本)。
如何从Cypress上运行需要AWS凭据(即测试数据创建)的设置步骤?在多次尝试找到解决方案后,结果非常简单。 这部分不需要
assumerole
正在工作,Cypress正在使用假定的角色运行,因此无需再次设置键
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 };
};