44 * Licensed under the MIT License. See License.txt in the project root for license information.
55 */
66
7- import { browser , element , by } from 'protractor' ;
7+ import { browser , element , by , ExpectedConditions as ec } from 'protractor' ;
88
99import { hasClass } from './e2e-helper' ;
1010
@@ -24,6 +24,8 @@ const newMenu = by.css('nb-menu ul li:nth-child(5) a');
2424const addButton = by . css ( '#addBtn' ) ;
2525const homeButton = by . css ( '#homeBtn' ) ;
2626
27+ const waitTime = 20 * 1000 ;
28+
2729describe ( 'nb-menu' , ( ) => {
2830
2931 beforeEach ( ( done ) => {
@@ -94,125 +96,151 @@ describe('nb-menu', () => {
9496 } ) ;
9597 } ) ;
9698
97- // it('should be selected - Menu #3.1', () => {
98- // expect(hasClass(element.all(menu3SubMenu).first(), 'collapsed')).toBeTruthy();
99- //
100- // element.all(menu3).first().click()
101- // .then(() => {
102- // element.all(menu31).first().getText()
103- // .then(val => {
104- // expect(val).toEqual('Menu #3.1');
105- // });
106- //
107- // element.all(menu31).first().click()
108- // .then(() => {
109- // expect(browser.getCurrentUrl()).toContain('#/menu/3/1');
110- // });
111- // });
112- // });
113- //
114- // it('should be selected - Menu #3.2', () => {
115- // element.all(menu3).first().click()
116- // .then(() => {
117- // element.all(menu32).first().getText()
118- // .then(val => {
119- // expect(val).toEqual('Menu #3.2');
120- // });
121- //
122- // element.all(menu32).first().click()
123- // .then(() => {
124- // expect(browser.getCurrentUrl()).toContain('#/menu/3/2');
125- // });
126- // });
127- // });
128-
129- // TODO: Fix test
130- // it('should be expanded - Menu #3.3', () => {
131- // element.all(menu3).first().click()
132- // .then(() => {
133- // element.all(menu33).first().getText()
134- // .then(val => {
135- // expect(val).toEqual('Menu #3.3');
136- // });
137-
138- // element.all(menu33).first().click()
139- // .then(() => {
140- // expect(hasClass(element.all(menu33SubMenu).first(), 'expanded')).toBeTruthy();
141- // expect(browser.getCurrentUrl()).toContain('#/menu/1');
142-
143- // element.all(menu33).first().click()
144- // .then(() => {
145- // expect(hasClass(element.all(menu33SubMenu).first(), 'collapsed')).toBeTruthy();
146- // expect(browser.getCurrentUrl()).toContain('#/menu/1');
147- // });
148- // });
149- // });
150- // });
151-
152- // it('should be selected - Menu #3.3.1', () => {
153- // element.all(menu3).first().click()
154- // .then(() => {
155- // element.all(menu33).first().click()
156- // .then(() => {
157- // element.all(menu331).first().getText()
158- // .then(val => {
159- // expect(val).toEqual('Menu #3.3.1');
160- // });
161-
162- // element.all(menu331).first().click()
163- // .then(() => {
164- // expect(hasClass(element.all(menu331).first(), 'active')).toBeTruthy();
165- // expect(browser.getCurrentUrl()).toContain('#/menu/3/3/1');
166- // });
167- // });
168- // });
169- // });
170-
171- // it('should be selected - Menu #3.3.2', () => {
172- // element.all(menu3).first().click()
173- // .then(() => {
174- // element.all(menu33).first().click()
175- // .then(() => {
176- // element.all(menu332).first().getText()
177- // .then(val => {
178- // expect(val).toEqual('Menu #3.3.2');
179- // });
180-
181- // element.all(menu332).first().click()
182- // .then(() => {
183- // expect(hasClass(element.all(menu332).first(), 'active')).toBeTruthy();
184- // expect(browser.getCurrentUrl()).toContain('#/menu/3/3/2');
185- // });
186- // });
187- // });
188- // });
189-
190- // it('should be selected - Menu #3.3.3', () => {
191- // element.all(menu3).first().click()
192- // .then(() => {
193- // element.all(menu33).first().click()
194- // .then(() => {
195- // element.all(menu333).first().getText()
196- // .then(val => {
197- // expect(val).toEqual('@nebular/theme');
198- // });
199-
200- // element.all(menu333).first().click()
201- // .then(() => {
202- // expect(hasClass(element.all(menu333).first(), 'active')).toBeTruthy();
203- // expect(browser.getCurrentUrl()).toContain('#/menu/1');
204- // });
205- // });
206- // });
207- // });
208-
209- // it('should be selected - Menu #3.2.2', () => {
210- // element(homeButton).click()
211- // .then(() => {
212- // expect(hasClass(element.all(menu332).first(), 'active')).toBeTruthy();
213- // expect(browser.getCurrentUrl()).toContain('#/menu/3/3/2');
214- // });
215- // });
99+ it ( 'should be selected - Menu #3.1' , ( ) => {
100+ expect ( hasClass ( element . all ( menu3SubMenu ) . first ( ) , 'collapsed' ) ) . toBeTruthy ( ) ;
101+
102+ element . all ( menu3 ) . first ( ) . click ( )
103+ . then ( ( ) => {
104+ const menu31el = element . all ( menu31 ) . first ( ) ;
105+ browser . wait ( ec . elementToBeClickable ( menu31el ) , waitTime ) ;
106+
107+ menu31el . getText ( )
108+ . then ( val => {
109+ expect ( val ) . toEqual ( 'Menu #3.1' ) ;
110+ } ) ;
111+
112+ menu31el . click ( )
113+ . then ( ( ) => {
114+ expect ( browser . getCurrentUrl ( ) ) . toContain ( '#/menu/3/1' ) ;
115+ } ) ;
116+ } ) ;
117+ } ) ;
118+
119+ it ( 'should be selected - Menu #3.2' , ( ) => {
120+ element . all ( menu3 ) . first ( ) . click ( )
121+ . then ( ( ) => {
122+ const menu32el = element . all ( menu32 ) . first ( ) ;
123+ browser . wait ( ec . elementToBeClickable ( menu32el ) , waitTime ) ;
124+
125+ menu32el . getText ( )
126+ . then ( val => {
127+ expect ( val ) . toEqual ( 'Menu #3.2' ) ;
128+ } ) ;
129+
130+ menu32el . click ( )
131+ . then ( ( ) => {
132+ expect ( browser . getCurrentUrl ( ) ) . toContain ( '#/menu/3/2' ) ;
133+ } ) ;
134+ } ) ;
135+ } ) ;
136+
137+ it ( 'should be expanded - Menu #3.3' , ( ) => {
138+ element . all ( menu3 ) . first ( ) . click ( )
139+ . then ( ( ) => {
140+ const menu33el = element . all ( menu33 ) . first ( ) ;
141+ browser . wait ( ec . elementToBeClickable ( menu33el ) , waitTime ) ;
142+
143+ menu33el . getText ( )
144+ . then ( val => {
145+ expect ( val ) . toEqual ( 'Menu #3.3' ) ;
146+ } ) ;
147+
148+ menu33el . click ( )
149+ . then ( ( ) => {
150+ expect ( hasClass ( element . all ( menu33SubMenu ) . first ( ) , 'expanded' ) ) . toBeTruthy ( ) ;
151+ expect ( browser . getCurrentUrl ( ) ) . toContain ( '#/menu/1' ) ;
152+
153+ menu33el . click ( )
154+ . then ( ( ) => {
155+ expect ( hasClass ( element . all ( menu33SubMenu ) . first ( ) , 'collapsed' ) ) . toBeTruthy ( ) ;
156+ expect ( browser . getCurrentUrl ( ) ) . toContain ( '#/menu/1' ) ;
157+ } ) ;
158+ } ) ;
159+ } ) ;
160+ } ) ;
161+
162+ it ( 'should be selected - Menu #3.3.1' , ( ) => {
163+ element . all ( menu3 ) . first ( ) . click ( )
164+ . then ( ( ) => {
165+ const menu33el = element . all ( menu33 ) . first ( ) ;
166+ browser . wait ( ec . elementToBeClickable ( menu33el ) , waitTime ) ;
167+
168+ menu33el . click ( )
169+ . then ( ( ) => {
170+ const menu331el = element . all ( menu331 ) . first ( ) ;
171+ browser . wait ( ec . elementToBeClickable ( menu331el ) , waitTime ) ;
172+
173+ menu331el . getText ( )
174+ . then ( val => {
175+ expect ( val ) . toEqual ( 'Menu #3.3.1' ) ;
176+ } ) ;
177+
178+ menu331el . click ( )
179+ . then ( ( ) => {
180+ expect ( hasClass ( menu331el , 'active' ) ) . toBeTruthy ( ) ;
181+ expect ( browser . getCurrentUrl ( ) ) . toContain ( '#/menu/3/3/1' ) ;
182+ } ) ;
183+ } ) ;
184+ } ) ;
185+ } ) ;
186+
187+ it ( 'should be selected - Menu #3.3.2' , ( ) => {
188+ element . all ( menu3 ) . first ( ) . click ( )
189+ . then ( ( ) => {
190+ const menu33el = element . all ( menu33 ) . first ( ) ;
191+ browser . wait ( ec . elementToBeClickable ( menu33el ) , waitTime ) ;
192+
193+ menu33el . click ( )
194+ . then ( ( ) => {
195+ const menu332el = element . all ( menu332 ) . first ( ) ;
196+ browser . wait ( ec . elementToBeClickable ( menu332el ) , waitTime ) ;
197+
198+ menu332el . getText ( )
199+ . then ( val => {
200+ expect ( val ) . toEqual ( 'Menu #3.3.2' ) ;
201+ } ) ;
202+
203+ menu332el . click ( )
204+ . then ( ( ) => {
205+ expect ( hasClass ( menu332el , 'active' ) ) . toBeTruthy ( ) ;
206+ expect ( browser . getCurrentUrl ( ) ) . toContain ( '#/menu/3/3/2' ) ;
207+ } ) ;
208+ } ) ;
209+ } ) ;
210+ } ) ;
211+
212+ it ( 'should be selected - Menu #3.3.3' , ( ) => {
213+ element . all ( menu3 ) . first ( ) . click ( )
214+ . then ( ( ) => {
215+ const menu33el = element . all ( menu33 ) . first ( ) ;
216+ browser . wait ( ec . elementToBeClickable ( menu33el ) , waitTime ) ;
217+
218+ menu33el . click ( )
219+ . then ( ( ) => {
220+ const menu333el = element . all ( menu333 ) . first ( ) ;
221+ browser . wait ( ec . elementToBeClickable ( menu333el ) , waitTime ) ;
222+
223+ menu333el . getText ( )
224+ . then ( val => {
225+ expect ( val ) . toEqual ( '@nebular/theme' ) ;
226+ } ) ;
227+
228+ menu333el . click ( )
229+ . then ( ( ) => {
230+ expect ( hasClass ( menu333el , 'active' ) ) . toBeTruthy ( ) ;
231+ expect ( browser . getCurrentUrl ( ) ) . toContain ( '#/menu/1' ) ;
232+ } ) ;
233+ } ) ;
234+ } ) ;
235+ } ) ;
236+
237+ it ( 'should be selected - Menu #3.2.2 (navigate home)' , ( ) => {
238+ element ( homeButton ) . click ( )
239+ . then ( ( ) => {
240+ expect ( hasClass ( element . all ( menu332 ) . first ( ) , 'active' ) ) . toBeTruthy ( ) ;
241+ expect ( browser . getCurrentUrl ( ) ) . toContain ( '#/menu/3/3/2' ) ;
242+ } ) ;
243+ } ) ;
216244
217245 it ( 'should add new menu item' , ( ) => {
218246 element ( addButton ) . click ( )
0 commit comments