Мне нужно войти в систему с 5 различными ролями и проверить, есть ли у них нужные вкладки для навигации в зависимости от их ролей.
Но проблема в том, он входит в систему с ролью «драйвера» и проверяет «rides.title» и «chauffeurs.title». Поскольку роль «водитель» не включает «chauffeurs.title», тест не пройден.
Он пропускает часть "if" и напрямую переходит к части "else if".
Что я пробовал:
Я попытался проверить, хорошо ли работает мой цикл, и, очевидно, он работает хорошо.
Я удалил весь блок if, вставил приведенный ниже код и увидел, что он вошел в систему с каждой отдельной ролью и проверил наличие «rides.title».
.visit('/planned')
.get('[data-qa="rides.title"')
.should('exist')
.get('[data-qa="logout"]')
.click()
За исключением последней роли; так как у него нет «rides.title», что нормально.
Вот полный код для обзора и получения дополнительной информации о том, что я сделал до сих пор:
const roles = ["driver", "dispatcher", "provider", "reviewer", "admin"];
it("Navigation items for a single permission", () => {
cy.fixture("users.json").then(users => {
const user = users[Cypress.env("ENVIRONMENT")];
roles.forEach(role => {
cy.login(user[role], Cypress.env("DEFAULT_USER_PASSWORD")).then(
response => {
cy.setCookie("__bl_pp__", response.body.result.access_token);
if (user[role] === "driver") {
cy.visit("/planned")
.get('[data-qa="rides.title"')
.should("exist")
.get('[data-qa="logout"]')
.click();
} else if (["dispatcher", "provider", "reviewer"].includes(user[role])) {
cy.visit("/planned")
.get('[data-qa="rides.title"')
.should("exist")
.get('[data-qa="chauffeurs.title"')
.should("exist")
.get('[data-qa="logout"]')
.click();
} else {
cy.visit("/planned")
.get('[data-qa="chauffeurs.title"')
.should("exist")
.get('[data-qa="logout"]')
.click();
}
})
})
})
})
})
Ожидаемый сценарий должен быть; тест должен войти в систему с 5 различными ролями и проверить доступные вкладки, как указано в коде выше.
Role Navigation Tabs
Driver Rides
Dispatcher Rides, Chauffeurs
Provider Rides, Chauffeurs
Reviewer Rides, Chauffeurs
Admin Chauffeurs
Заранее спасибо!
Вот мой файл users.json:
{
"development":
{
"driver": "aa+driver@b.com",
"dispatcher": "bb+dispatcher@b.com",
"provider": "cc+provider@b.com",
"reviewer": "dd+reviewer@b.com",
"admin": "ee+admin@b.com"
}
}