JS / Cypress.io: Как перебирать 2 соответствующих набора данных
Это то, что у меня есть в настоящее время, и оно работает, но я хочу сделать его больше DRY (не повторяйтесь):
Использование Cypress.io :
var states1 = [
"NE",
"MO",
"KS",
"IA",
"OK",
"OR",
"WA",
"AZ",
"NM",
"NC",
"SC",
"GA",
"FL"
];
cy.get('[data-popup-text="26% to 50% of People"]').within(() => {
cy.wrap(states1).each(state => {
cy.get(`[data-state="${state}"]`).trigger("mouseover", { force: true });
cy.get(`[data-state="${state}"]`).click({ force: true });
cy.get(`[data-state="${state}"]`).should("be.visible");
});
});
var states2 = ["VT", "PA"];
cy.get('[data-popup-text="60% of People"]').within(() => {
cy.wrap(states2).each(state => {
cy.get(`[data-state="${state}"]`).trigger("mouseover");
cy.get(`[data-state="${state}"]`).click();
cy.get(`[data-state="${state}"]`).should("be.visible");
});
});
var states3 = ["MD"];
cy.get('[data-popup-text="81% to 90% of People"]').within(() => {
cy.wrap(states3).each(state => {
cy.get(`[data-state="${state}"]`).trigger("mouseover", { force: true });
cy.get(`[data-state="${state}"]`).click({ force: true });
cy.get(`[data-state="${state}"]`).should("be.visible");
});
});
Как вы можете заметить, это повторение большого количества кода. Я хочу сделать его более сухим и начал пробовать что-то подобное, но мне нужна помощь, и я не уверен, что это лучший способ, он не завершен, и я просто пытался понять, как это сделать, поэтому он не работает как
Я хочу соответственно вставить каждое соответствующее значение из набора данных, а затем запустить утверждения. Поэтому мне нужен какой-то l oop для работы с этим набором данных:
var items = [
["NE", "26% to 50% of People"],
["MO", "26% to 50% of People"],
["KS", "26% to 50% of People"],
["VT", "60% of People"],
["PA", "60% of People"],
["MD", "81% to 90% of People"]
];
cy.get(`[data-popup-text="${items[0][1]}"]`).within(() => {
cy.wrap(items).each(item => {
cy.get(`[data-state="${items[0][0]}"]`).trigger("mouseover", {
force: true
});
cy.get(`[data-state="${items[0][0]}"]`).click({ force: true });
cy.get(`[data-state="${items[0][0]}"]`).should("be.visible");
});
});