Skip to content

Commit 775fcd8

Browse files
authored
chore(ui5-product-switch): migrate wdio tests to cypress (#11907)
Convert ProductSwitch and ProductSwitchItem tests to Cypress component tests while maintaining test coverage and functionality parity with original specs. JIRA: BGSOFUIPIRIN-6816
1 parent a02011f commit 775fcd8

File tree

4 files changed

+124
-77
lines changed

4 files changed

+124
-77
lines changed

packages/fiori/cypress/specs/ProductSwitch.cy.tsx

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,86 @@ describe("List - getFocusDomRef Method", () => {
4848
expect(ps.getFocusDomRef()).to.equal(psItem.getFocusDomRef());
4949
});
5050
});
51-
});
51+
});
52+
53+
describe("ProductSwitch general interaction", () => {
54+
it("tests 3-column desktop layout", () => {
55+
cy.mount(
56+
<ProductSwitch desktopColumns={3}>
57+
<ProductSwitchItem titleText="Home" subtitleText="Central Home" icon="home"></ProductSwitchItem>
58+
<ProductSwitchItem titleText="Analytics Cloud" subtitleText="Analytics Cloud" icon="business-objects-experience"></ProductSwitchItem>
59+
<ProductSwitchItem titleText="Catalog" subtitleText="Ariba" icon="contacts"></ProductSwitchItem>
60+
<ProductSwitchItem titleText="Guided Buying" icon="credit-card"></ProductSwitchItem>
61+
</ProductSwitch>
62+
);
63+
64+
cy.get("[ui5-product-switch]")
65+
.should("have.attr", "desktop-columns", "3")
66+
.invoke("prop", "items")
67+
.should("have.length", 4)
68+
.should("have.length.at.most", 6);
69+
});
70+
71+
it("tests 4-column desktop layout", () => {
72+
cy.mount(
73+
<ProductSwitch desktopColumns={4}>
74+
<ProductSwitchItem titleText="Home" subtitleText="Central Home" icon="home"></ProductSwitchItem>
75+
<ProductSwitchItem titleText="Analytics Cloud" subtitleText="Analytics Cloud" icon="business-objects-experience"></ProductSwitchItem>
76+
<ProductSwitchItem titleText="Catalog" subtitleText="Ariba" icon="contacts"></ProductSwitchItem>
77+
<ProductSwitchItem titleText="Guided Buying" icon="credit-card"></ProductSwitchItem>
78+
<ProductSwitchItem titleText="Strategic Procurement" icon="cart-3"></ProductSwitchItem>
79+
<ProductSwitchItem titleText="Travel & Expense" subtitleText="Concur" icon="flight"></ProductSwitchItem>
80+
<ProductSwitchItem titleText="Vendor Management" subtitleText="Fieldglass" icon="shipping-status"></ProductSwitchItem>
81+
<ProductSwitchItem titleText="Human Capital Management" icon="customer"></ProductSwitchItem>
82+
<ProductSwitchItem titleText="Sales Cloud" subtitleText="Sales Cloud" icon="sales-notification"></ProductSwitchItem>
83+
<ProductSwitchItem titleText="Commerce Cloud" subtitleText="Commerce Cloud" icon="retail-store"></ProductSwitchItem>
84+
<ProductSwitchItem titleText="Marketing Cloud" subtitleText="Marketing Cloud" icon="marketing-campaign"></ProductSwitchItem>
85+
<ProductSwitchItem titleText="Service Cloud" icon="family-care"></ProductSwitchItem>
86+
<ProductSwitchItem titleText="Customer Data Cloud" icon="customer-briefing"></ProductSwitchItem>
87+
<ProductSwitchItem titleText="S/4HANA" icon="batch-payments"></ProductSwitchItem>
88+
</ProductSwitch>
89+
);
90+
91+
cy.get("[ui5-product-switch]")
92+
.should("have.attr", "desktop-columns", "4")
93+
.invoke("prop", "items")
94+
.should("have.length", 14)
95+
.should("have.length.above", 6);
96+
});
97+
});
98+
99+
describe("ProductSwitch ARIA attributes", () => {
100+
it("role and aria-label set correctly", () => {
101+
cy.mount(
102+
<ProductSwitch>
103+
<ProductSwitchItem titleText="Home" subtitleText="Central Home" icon="home"></ProductSwitchItem>
104+
<ProductSwitchItem titleText="Analytics Cloud" subtitleText="Analytics Cloud" icon="business-objects-experience"></ProductSwitchItem>
105+
<ProductSwitchItem titleText="Catalog" subtitleText="Ariba" icon="contacts"></ProductSwitchItem>
106+
<ProductSwitchItem titleText="Guided Buying" icon="credit-card"></ProductSwitchItem>
107+
</ProductSwitch>
108+
);
109+
110+
cy.get("[ui5-product-switch]")
111+
.shadow()
112+
.find(".ui5-product-switch-root")
113+
.should("have.attr", "role", "list")
114+
.should("have.attr", "aria-label", "Products");
115+
});
116+
});
117+
118+
describe("ProductSwitch styles", () => {
119+
it("tests root element inherit styles", () => {
120+
cy.mount(
121+
<ProductSwitch style={{ display: "flex", justifyContent: "center", alignItems: "center" }}>
122+
<ProductSwitchItem titleText="Home" subtitleText="Central Home" icon="home"></ProductSwitchItem>
123+
<ProductSwitchItem titleText="Analytics Cloud" subtitleText="Analytics Cloud" icon="business-objects-experience"></ProductSwitchItem>
124+
</ProductSwitch>
125+
);
126+
127+
cy.get("[ui5-product-switch]")
128+
.shadow()
129+
.find(".ui5-product-switch-root")
130+
.should("have.css", "justify-content", "center")
131+
.should("have.css", "align-items", "center");
132+
});
133+
});
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import ProductSwitchItem from "../../src/ProductSwitchItem.js";
2+
3+
describe("ProductSwitchItem general interaction", () => {
4+
it("tests rendering", () => {
5+
cy.mount(
6+
<ProductSwitchItem
7+
titleText="Test Title"
8+
subtitleText="Test Subtitle"
9+
icon="home"
10+
></ProductSwitchItem>
11+
);
12+
13+
cy.get("[ui5-product-switch-item]")
14+
.shadow()
15+
.find(".ui5-product-switch-item-icon")
16+
.should("exist");
17+
18+
cy.get("[ui5-product-switch-item]")
19+
.shadow()
20+
.find(".ui5-product-switch-item-title")
21+
.should("exist");
22+
23+
cy.get("[ui5-product-switch-item]")
24+
.shadow()
25+
.find(".ui5-product-switch-item-subtitle")
26+
.should("exist");
27+
});
28+
});
29+
30+
describe("ProductSwitchItem ARIA attributes", () => {
31+
it("items role set correctly", () => {
32+
cy.mount(
33+
<ProductSwitchItem titleText="Test Title"></ProductSwitchItem>
34+
);
35+
36+
cy.get("[ui5-product-switch-item]")
37+
.shadow()
38+
.find(".ui5-product-switch-item-root")
39+
.should("have.attr", "role", "listitem");
40+
});
41+
});

packages/fiori/test/specs/ProductSwitch.spec.js

Lines changed: 0 additions & 52 deletions
This file was deleted.

packages/fiori/test/specs/ProductSwitchItem.spec.js

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)