Amazon web services 是否可以使用AWS assumerole运行Cypress测试?

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 一旦承担了这个角色,就可以运行测试数据

我创建了一些自动化测试来测试面向公众的API端点。有一个测试数据创建步骤,它直接在AWS环境中运行和创建数据(即直接执行Lambdas,向数据库添加条目)。这被集成到Cypress中,并在package.json中添加了一个包

要执行此操作,首先需要使用
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 };
    };