Я пишу здесь несколько тестов для компонента, который использует semanti c -react-ui, используя cypress js для тестирования.
Вот div, содержащий элементы, которые я буду тестировать sh:
<div data-testid="images-count" class="customize-row images-count">
<h3 data-testid="option-name-8" class="option-name">Font Size</h3>
<div data-testid="font-select" role="listbox" aria-expanded="true" class="ui active visible selection dropdown option-input images-select" tabindex="0">
<div class="text" role="alert" aria-live="polite">Medium</div>
<i aria-hidden="true" class="dropdown icon"></i>
<div class="menu transition visible">
<div role="option" aria-checked="false" aria-selected="false" class="item" style="pointer-events: all;"><span class="text">Small</span></div>
<div role="option" aria-checked="true" aria-selected="true" class="active selected item" style="pointer-events: all;"><span class="text">Medium</span></div>
<div role="option" aria-checked="false" aria-selected="false" class="item" style="pointer-events: all;"><span class="text">Large</span></div>
<div role="option" aria-checked="false" aria-selected="false" class="item" style="pointer-events: all;"><span class="text">Extra Large</span></div>
</div>
</div>
</div>
Вот небольшой тест, который я проделал для элементов в этом div:
cy.get("[data-testid=images-count]").within($result => {
cy.findByRole("alert").should("have.text", "Medium");
cy.get(".icon").should("be.visible");
cy.get(".menu").should("not.be.visible");
cy.get("[data-testid=font-select]").click();
cy.get(".menu").should("be.visible");
});
Я попытался получить параметры из меню в массив, а затем проверить их по другому массиву:
cy.get('.menu').then(options => {
const actual = [...options].map(o => o.value)
expect(actual).to.deep.eq(['Small', 'Medium', 'Large', 'Extra Large'])
})
Однако это возвращает список div, а не фактический тестовый констант I ищу Любые идеи?