#amazon-web-services #automation #cypress #qa
#amazon-web-services #автоматизация #cypress
Вопрос:
Я создал несколько автоматических тестов для тестирования общедоступной конечной точки API. Существует этап создания тестовых данных, который запускается и создает данные непосредственно в нашей среде AWS (т. Е. непосредственно выполняет лямбды, добавляя записи в базу данных). Это интегрировано в Cypress и добавлено в пакет package.json
Для выполнения этого сначала необходимо использовать aws-sdk
, в частности assumerole
. Когда этот процесс запускается непосредственно с помощью Node, он запускается и заполняется ~/.aws/credentials
с помощью aws_access_key_id
, aws_secret_access_key
и aws_session_token
.
Как только эта роль принята, можно запускать создание тестовых данных, и данные создаются для тестирования.
Используя Node и среду Node, это работает правильно, и данные создаются.
Но когда это выполняется в Cypress, происходит сбой.
Это мой 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 };
};
И поскольку процесс создания тестовых данных является асинхронным, я добавил эту команду async в 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 установлена неправильно. Что заставляет меня думать, что Cypress не может корректно запускать тесты с предполагаемой ролью AWS. Или, может быть, я сделал что-то не так. Я предполагал, что это должно «просто работать» (например, как сценарий создания тестовых данных может быть запущен с помощью Node).
Как можно выполнить шаги настройки, требующие учетных данных AWS (т. Е. Создание тестовых данных), из Cypress?
Ответ №1:
После различных попыток найти решение — это оказалось довольно простым. Эта часть не понадобилась. 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 };
};