Skip to content

Commit bb65d16

Browse files
ludmilanesvitiyvalorkin
authored andcommitted
feat(tests): add full coverage for Collapse component demo (#4847)
1 parent 52fc9e8 commit bb65d16

File tree

5 files changed

+133
-7
lines changed

5 files changed

+133
-7
lines changed

cypress/full/collapse_page_spec.ts

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import { CollapsePo } from '../support/collapse.po';
2+
3+
describe('Collapse demo page test suite', () => {
4+
const collapse = new CollapsePo();
5+
6+
beforeEach(() => collapse.navigateTo());
7+
8+
describe('Events', () => {
9+
const events = collapse.exampleDemosArr.events;
10+
11+
it('example contains "Toggle collapse" button and div block with "Some content", "Event: expanded"', () => {
12+
collapse.isCollapseExpanded(events, 'true');
13+
collapse.isCollapseInfoEqual(events, 'Event: expanded');
14+
});
15+
16+
it('when user clicks on "Toggle collapse", then "Some content" disappear and user see "Event: collapsed"', () => {
17+
const toglerText = 'Toggle collapse';
18+
collapse.clickByText(events, toglerText);
19+
collapse.isCollapseExpanded(events, 'false');
20+
collapse.isCollapseInfoEqual(events, 'Event: collapsed');
21+
22+
});
23+
24+
it('when user clicks on "Toggle collapse" again, then "Some content" and "Event: expanded" appear', () => {
25+
const toglerText = 'Toggle collapse';
26+
collapse.dblClickByText(events, toglerText);
27+
collapse.isCollapseExpanded(events, 'true');
28+
collapse.isCollapseInfoEqual(events, 'Event: expanded');
29+
});
30+
});
31+
32+
describe('Manual toggle', () => {
33+
const manualToggle = collapse.exampleDemosArr.manualToggle;
34+
35+
beforeEach(() => {
36+
collapse.scrollToMenu('Manual toggle');
37+
});
38+
39+
it('example contains "Show content" and "Hide content" buttons, div block with "Some content"', () => {
40+
collapse.isBtnTxtEqual(manualToggle, 'Show content\n', 0);
41+
collapse.isBtnTxtEqual(manualToggle, 'Hide content\n', 1);
42+
collapse.isCollapseExpanded(manualToggle, 'true');
43+
44+
});
45+
46+
it('when user clicks on "Hide content", then collapse disappear, on "Show content" - "Some content" appear', () => {
47+
collapse.clickOnBtn(manualToggle, 1);
48+
collapse.isCollapseExpanded(manualToggle, 'false');
49+
50+
collapse.clickOnBtn(manualToggle, 0);
51+
collapse.isCollapseExpanded(manualToggle, 'true');
52+
});
53+
});
54+
55+
describe('Inline display', () => {
56+
const inlineDisplay = collapse.exampleDemosArr.inlineDisplay;
57+
58+
beforeEach(() => {
59+
collapse.scrollToMenu('Inline display');
60+
});
61+
62+
it('example contains "Inline-block" and "None" buttons', () => {
63+
collapse.isBtnTxtEqual(inlineDisplay, 'Inline-block\n', 0);
64+
collapse.isBtnTxtEqual(inlineDisplay, 'None\n', 1);
65+
collapse.isCollapseExpanded(inlineDisplay, 'false');
66+
67+
});
68+
69+
it('when user clicks on "Inline-block", then collapse appear with inline-block, on "None" - without inline', () => {
70+
collapse.clickOnBtn(inlineDisplay, 0);
71+
collapse.isCollapseExpanded(inlineDisplay, 'false');
72+
collapse.isCollapseWithInline(inlineDisplay, true);
73+
74+
collapse.clickOnBtn(inlineDisplay, 1);
75+
collapse.isCollapseExpanded(inlineDisplay, 'false');
76+
collapse.isCollapseWithInline(inlineDisplay, false);
77+
});
78+
});
79+
80+
describe('Accessibility', () => {
81+
it('example contains info about "aria-expanded", "aria-controls" attributes', () => {
82+
const accessibilityInfo = collapse.exampleDemosArr.accessibility;
83+
cy.viewport(1440, 900);
84+
collapse.clickOnDemoMenu('Accessibility');
85+
collapse.isDemoContainsTxt(accessibilityInfo, 'aria-expanded', 'aria-controls');
86+
});
87+
});
88+
});

cypress/integration/collapse_page_spec.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,10 @@ describe('Collapse demo page test suite', () => {
1010

1111
it('contains togler and content, that can be collapsed', () => {
1212
const toglerText = 'Toggle collapse';
13-
14-
cy.get(`${ basic } ${ collapse.collapseClass }`)
15-
.should('to.have.class', collapse.showIndicator);
13+
collapse.isCollapseExpanded(basic, 'true');
1614

1715
collapse.clickByText(basic, toglerText);
18-
cy.get(`${ basic } ${ collapse.collapseClass }`)
19-
.should('not.to.have.class', collapse.showIndicator);
16+
collapse.isCollapseExpanded(basic, 'false');
2017
});
2118
});
2219
});

cypress/support/collapse.po.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,30 @@ export class CollapsePo extends BaseComponent {
77

88
collapseClass = '.collapse';
99
showIndicator = 'in show';
10+
infoClass = '.col-md-9';
1011

1112
exampleDemosArr = {
12-
basic: 'collapse-demo'
13+
basic: 'collapse-demo',
14+
events: 'collapse-demo-events',
15+
manualToggle: 'toggle-manual-demo',
16+
inlineDisplay: 'inline-display-demo',
17+
accessibility: 'demo-accessibility'
1318
};
19+
20+
isCollapseExpanded(baseSelector: string, expandedAttrValue: string) {
21+
cy.get(`${ baseSelector } ${ this.collapseClass }`)
22+
.should(expandedAttrValue === 'true' ? 'to.have.class' : 'not.to.have.class', this.showIndicator)
23+
.and('to.have.attr', 'aria-expanded', expandedAttrValue);
24+
}
25+
26+
isCollapseWithInline(baseSelector: string, inline: boolean) {
27+
cy.get(`${ baseSelector } ${ this.collapseClass }`)
28+
.should('to.have.attr', 'style', inline ? 'display: inline-block;' : 'display: none;');
29+
30+
}
31+
32+
isCollapseInfoEqual(baseSelector: string, expectedText: string) {
33+
cy.get(`${ baseSelector } ${ this.infoClass }`).invoke('text')
34+
.should(infoTxt => expect(infoTxt).to.equal(expectedText));
35+
}
1436
}

docs/spec/collapse/collapse.examples.accessibility.use-case.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
4.4: Collapse accessibility example
1+
4.5: Collapse accessibility example
22
===================================
33
**Primary Actor**: User
44

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
4.4: Collapse inline display example
2+
===================================
3+
**Primary Actor**: User
4+
5+
**Scope**: Ngx-bootstrap DEMO / BS version 3&4
6+
7+
**Goal**: Show user collapse with inline display example
8+
9+
Main success scenario:
10+
----------------------
11+
1. User opens Collapse demo page
12+
2. User clicks on Inline display sub-menu
13+
3. User see clickable "Inline-block" and "None" buttons
14+
4. When user clicks on "Inline-block", then "Some content" appear with style: inline-block
15+
5. When user clicks on "None", tthen "Some content" disappear with style: display-none
16+
17+
Variations:
18+
-----------
19+
2*. User scrolls to Inline display sub-menu

0 commit comments

Comments
 (0)