1+ //IMPORTS:
2+ import 'expect-puppeteer' ;
3+ import { click } from './utils' ;
4+ import { toMatchImageSnapshot } from 'jest-image-snapshot'
5+ expect . extend ( { toMatchImageSnapshot } )
6+ const path = require ( 'path' ) ;
7+ var scriptName = path . basename ( __filename , '.js' ) ;
8+ import * as selectors from './selectors'
9+
10+
11+ //PAGE INFO:
12+ const baseURL = process . env . url || 'https://stage.netpyne.metacell.us/'
13+ const PAGE_WAIT = 3000 ;
14+ const TIMEOUT = 60000 ;
15+
16+ //SNAPSHOT:
17+ const SNAPSHOT_OPTIONS = {
18+ customSnapshotsDir : `./tests/snapshots/Tut#2_smoke.test/` ,
19+ comparisonMethod : 'ssim' ,
20+ failureThresholdType : 'percent' ,
21+ failureThreshold : 0.25
22+ } ;
23+
24+ let r = ( Math . random ( ) + 1 ) . toString ( 36 ) . substring ( 2 ) ;
25+
26+ //USERS:
27+ const USERNAME = `TestUser${ r } `
28+ const PASSWORD = 'testpassword'
29+
30+ //TESTS:
31+
32+ jest . setTimeout ( 300000 ) ;
33+
34+
35+
36+ describe ( 'Test for the Control Panel - color picker' , ( ) => {
37+
38+ beforeAll ( async ( ) => {
39+ await page . goto ( baseURL ) ;
40+ await page . waitForSelector ( selectors . LOGIN_PAGE_SELECTOR ) ;
41+ await page . waitForSelector ( selectors . USERNAME_SELECTOR )
42+ await expect ( page )
43+ . toFill ( selectors . USERNAME_SELECTOR , USERNAME , { timeout : TIMEOUT } ) ;
44+
45+ await page . waitForSelector ( selectors . PASSWORD_SELECTOR )
46+ await expect ( page )
47+ . toFill ( selectors . PASSWORD_SELECTOR , PASSWORD , { timeout : TIMEOUT } ) ;
48+
49+ await page . click ( selectors . LOGIN_BUTTON_SELECTOR )
50+
51+ await page . waitForFunction ( ( ) => {
52+ let el = document . querySelector ( '#loading-spinner' ) ;
53+ return el == null || el . clientHeight === 0 ;
54+ } , { timeout : TIMEOUT } ) ;
55+ } ) ;
56+
57+ it ( 'Open new page' , async ( ) => {
58+
59+ console . log ( 'Opening a new NetPyNE page' )
60+
61+ await page . on ( "dialog" , dialog =>
62+ dialog . accept ( ) ) ;
63+
64+ await page . waitForSelector ( selectors . SELECT_CELL_BUTTON_SELECTOR , { timeout : TIMEOUT * 6 , visible : true } )
65+ await page . waitForSelector ( selectors . FILE_TAB_SELECTOR , { timeout : PAGE_WAIT * 3 } )
66+ await page . waitForTimeout ( PAGE_WAIT )
67+ await page . click ( selectors . FILE_TAB_SELECTOR )
68+ await page . waitForSelector ( selectors . NEW_FILE_SELECTOR , { timeout : PAGE_WAIT * 3 } )
69+ await page . waitForTimeout ( PAGE_WAIT )
70+ await page . click ( selectors . NEW_FILE_SELECTOR )
71+ await page . waitForTimeout ( PAGE_WAIT )
72+ await page . waitForSelector ( selectors . CONFIRM_NEW_PAGE_SELECTOR )
73+ await page . click ( selectors . CONFIRM_NEW_PAGE_SELECTOR )
74+ await page . waitForTimeout ( PAGE_WAIT * 2 )
75+
76+ await page . waitForFunction ( ( ) => {
77+ let el = document . querySelector ( '#loading-spinner' ) ;
78+ return el == null || el . clientHeight === 0 ;
79+ } , { timeout : TIMEOUT } ) ;
80+
81+ await page . waitForSelector ( selectors . SELECT_CELL_BUTTON_SELECTOR , { timeout : TIMEOUT * 10 } )
82+
83+ console . log ( 'Page opened successfully' )
84+
85+ } )
86+
87+ it ( 'Load Tutorial#2' , async ( ) => {
88+
89+ await page . waitForTimeout ( PAGE_WAIT * 2 )
90+ await page . waitForSelector ( selectors . SELECT_CELL_BUTTON_SELECTOR , { timeout : TIMEOUT } )
91+ await page . waitForTimeout ( PAGE_WAIT )
92+ await page . click ( selectors . TUTORIALS_BUTTON_SELECTOR , { timeout : TIMEOUT } )
93+
94+ console . log ( 'Loading Tutorial #2' )
95+
96+ await page . click ( selectors . TUTORIAL_2_SELECTOR , { timeout : TIMEOUT } )
97+ await page . waitForTimeout ( PAGE_WAIT )
98+ await page . waitForSelector ( selectors . PYR_2_CELL_SELECTOR )
99+ await page . waitForSelector ( selectors . INT_CELL_SELECTOR )
100+ await page . waitForTimeout ( PAGE_WAIT )
101+
102+ console . log ( 'Tutorial #2 loaded successfully' )
103+
104+ } )
105+
106+
107+ it ( 'Create network' , async ( ) => {
108+
109+ await page . waitForSelector ( selectors . MODEL_BUTTON_SELECTOR )
110+ await page . click ( selectors . MODEL_BUTTON_SELECTOR , { timeout : TIMEOUT } ) ;
111+ await page . waitForSelector ( selectors . CREATE_NETWORK_SELECTOR )
112+ await page . click ( selectors . CREATE_NETWORK_SELECTOR , { timeout : TIMEOUT } ) ;
113+
114+ console . log ( 'Create network' )
115+
116+ await page . waitForSelector ( selectors . DISABLED_RASTER_PLOT_SELECTOR , { timeout : TIMEOUT * 3 } )
117+
118+ console . log ( 'Network created successfully' )
119+
120+ await page . waitForTimeout ( PAGE_WAIT )
121+
122+ console . log ( '... taking snapshot ...' ) ;
123+ await page . waitForTimeout ( PAGE_WAIT ) ;
124+ expect ( await page . screenshot ( ) )
125+ . toMatchImageSnapshot ( {
126+ ...SNAPSHOT_OPTIONS ,
127+ customSnapshotIdentifier : 'Tutorial#2 Network'
128+ } ) ;
129+ } )
130+
131+ it ( 'Open Color Picker Menu' , async ( ) => {
132+
133+ console . log ( 'Opening Control Panel' )
134+
135+ await page . waitForSelector ( selectors . CONTROL_PANEL_TAB_SELECTOR )
136+ await page . click ( selectors . CONTROL_PANEL_TAB_SELECTOR )
137+ await page . waitForSelector ( selectors . NETWORKS_IN_CONTROL_PANEL_SELECTOR )
138+
139+ const network_items = ( await page . $$ ( selectors . NETWORK_ITEMS_CONTROL_PANEL_SELECTOR ) ) . length ;
140+ await expect ( network_items ) . toEqual ( 3 )
141+
142+ console . log ( 'Control Panel displayed successfully' )
143+
144+ } )
145+
146+ it ( 'Randomize Main Level network color' , async ( ) => {
147+
148+ console . log ( 'Randomize Main Level network color' )
149+
150+ await page . waitForTimeout ( PAGE_WAIT * 3 )
151+ await page . waitForSelector ( selectors . CONTROL_PANEL_TABLE_SELECTOR )
152+
153+ const primary_level_colors = await page . $$eval ( selectors . COLOR_RECT_SELECTOR , primary_level_colors => {
154+ return primary_level_colors . map ( primary_level_color => primary_level_color . outerHTML ) ;
155+ } ) ;
156+
157+ expect ( primary_level_colors [ 0 ] ) . toContain ( 'fill="#FF7F99"' )
158+ expect ( primary_level_colors [ 0 ] ) . toEqual ( primary_level_colors [ 1 ] )
159+ expect ( primary_level_colors [ 1 ] ) . toEqual ( primary_level_colors [ 2 ] )
160+
161+ await page . waitForTimeout ( PAGE_WAIT )
162+
163+ const rows = await page . $$ ( selectors . CONTROL_PANEL_NETWORK_ROWS_SELECTOR )
164+ for ( var i = 0 ; i < rows . length ; i ++ ) {
165+ await rows [ 0 ] . hover ( )
166+ }
167+
168+ const buttons = await page . $$ ( selectors . COLOR_CONTROL_BUTTONS_SELECTOR )
169+
170+ for ( var i = 0 ; i < buttons . length ; i ++ ) {
171+ await buttons [ 1 ] . click ( )
172+ }
173+
174+ await page . waitForTimeout ( PAGE_WAIT )
175+
176+ const rndm_primary_level_colors = await page . $$eval ( selectors . COLOR_RECT_SELECTOR , rndm_primary_level_colors => {
177+ return rndm_primary_level_colors . map ( rndm_primary_level_color => rndm_primary_level_color . outerHTML ) ;
178+ } ) ;
179+
180+ expect ( rndm_primary_level_colors [ 0 ] ) . toContain ( 'fill="#989898"' )
181+ expect ( rndm_primary_level_colors [ 2 ] ) . not . toEqual ( rndm_primary_level_colors [ 1 ] )
182+
183+ console . log ( 'Main Network color randomized successfully' )
184+
185+ await page . waitForTimeout ( PAGE_WAIT )
186+
187+ } )
188+
189+ it ( 'Randomize Sub level E network color' , async ( ) => {
190+
191+ console . log ( 'Randomize Sub Level E network color' )
192+
193+ const rows = await page . $$ ( selectors . CONTROL_PANEL_NETWORK_ROWS_SELECTOR )
194+ for ( var i = 0 ; i < rows . length ; i ++ ) {
195+ await rows [ 1 ] . click ( )
196+ await rows [ 1 ] . hover ( )
197+ }
198+ await page . waitForTimeout ( PAGE_WAIT )
199+
200+ const second_level_colors = await page . $$eval ( selectors . COLOR_RECT_SELECTOR , second_level_colors => {
201+ return second_level_colors . map ( second_level_color => second_level_color . outerHTML ) ;
202+ } ) ;
203+
204+
205+ expect ( second_level_colors [ 1 ] ) . toEqual ( second_level_colors [ 2 ] )
206+ expect ( second_level_colors [ 2 ] ) . toEqual ( second_level_colors [ 3 ] )
207+
208+
209+ const buttons = await page . $$ ( selectors . COLOR_CONTROL_BUTTONS_SELECTOR )
210+
211+ for ( var i = 0 ; i < buttons . length ; i ++ ) {
212+ await buttons [ 2 ] . click ( )
213+ }
214+
215+ await page . waitForTimeout ( PAGE_WAIT * 2 )
216+
217+ const second_level_colors_after_rndm = await page . $$eval ( selectors . COLOR_RECT_SELECTOR , second_level_colors_after_rndm => {
218+ return second_level_colors_after_rndm . map ( second_level_color_after_rndm => second_level_color_after_rndm . outerHTML ) ;
219+ } ) ;
220+
221+ expect ( second_level_colors_after_rndm [ 1 ] ) . toContain ( 'fill="#989898"' )
222+ expect ( second_level_colors_after_rndm [ 2 ] ) . not . toEqual ( second_level_colors_after_rndm [ 3 ] )
223+ expect ( second_level_colors_after_rndm [ 2 ] ) . not . toEqual ( second_level_colors_after_rndm [ 1 ] )
224+
225+ console . log ( 'E Network color randomized successfully' )
226+
227+ await page . waitForTimeout ( PAGE_WAIT * 3 )
228+
229+ } )
230+
231+
232+ it ( 'Pick a color for the sublevel I netowrk' , async ( ) => {
233+
234+ console . log ( 'Selecting a color for the I network' )
235+
236+ const rows = await page . $$ ( selectors . CONTROL_PANEL_NETWORK_ROWS_SELECTOR )
237+ for ( var i = 0 ; i < rows . length ; i ++ ) {
238+ await rows [ 1 ] . click ( )
239+ }
240+
241+ await page . waitForTimeout ( PAGE_WAIT )
242+
243+ const rows_ = await page . $$ ( selectors . CONTROL_PANEL_NETWORK_ROWS_SELECTOR )
244+
245+ for ( var i = 0 ; i < rows_ . length ; i ++ ) {
246+ await rows_ [ 2 ] . click ( )
247+ }
248+
249+ await page . waitForTimeout ( PAGE_WAIT )
250+
251+ const network_colors = await page . $$eval ( selectors . COLOR_RECT_SELECTOR , network_colors => {
252+ return network_colors . map ( network_color => network_color . outerHTML ) ;
253+ } ) ;
254+
255+ expect ( network_colors [ 3 ] ) . toEqual ( network_colors [ 4 ] )
256+ expect ( network_colors [ 3 ] ) . toEqual ( network_colors [ 2 ] )
257+
258+ await page . waitForTimeout ( PAGE_WAIT * 3 )
259+
260+ const buttons = await page . $$ ( selectors . COLOR_CONTROL_BUTTONS_SELECTOR )
261+
262+ for ( var i = 0 ; i < buttons . length ; i ++ ) {
263+ await buttons [ 4 ] . click ( )
264+ }
265+
266+ await page . waitForTimeout ( PAGE_WAIT )
267+
268+ const list_bounds = await page . $ ( selectors . NETWORKS_IN_CONTROL_PANEL_SELECTOR ) ;
269+ const rect = await page . evaluate ( ( list_bounds ) => {
270+ const { top, left, bottom, right } = list_bounds . getBoundingClientRect ( ) ;
271+ return { top, left, bottom, right } ;
272+ } , list_bounds ) ;
273+
274+ await page . waitForTimeout ( PAGE_WAIT )
275+ await page . mouse . click ( Math . round ( rect . right ) - 40 , Math . round ( rect . bottom ) + 40 )
276+ await page . waitForTimeout ( PAGE_WAIT * 2 )
277+
278+ const rows_after_colouring_I = await page . $$ ( selectors . CONTROL_PANEL_NETWORK_ROWS_SELECTOR )
279+ for ( var i = 0 ; i < rows_after_colouring_I . length ; i ++ ) {
280+ await rows_after_colouring_I [ 2 ] . click ( )
281+ }
282+
283+ const network_colors_after_colouring_I = await page . $$eval ( selectors . COLOR_RECT_SELECTOR , network_colors_after_colouring_I => {
284+ return network_colors_after_colouring_I . map ( network_color_after_colouring_I => network_color_after_colouring_I . outerHTML ) ;
285+ } ) ;
286+ await page . waitForTimeout ( PAGE_WAIT )
287+
288+ expect ( network_colors_after_colouring_I [ 2 ] ) . toEqual ( network_colors_after_colouring_I [ 3 ] )
289+ expect ( network_colors_after_colouring_I [ 2 ] ) . toEqual ( network_colors_after_colouring_I [ 4 ] )
290+
291+ console . log ( 'I network color selected successfully' )
292+
293+ } )
294+
295+ it ( 'Filter results from the Control panel' , async ( ) => {
296+
297+ await page . waitForTimeout ( PAGE_WAIT )
298+ console . log ( 'Filtering results' )
299+
300+ await expect ( page ) . toFill ( selectors . CONTROL_PANEL_FILTER_SELECTOR , 'E' )
301+
302+ await page . waitForTimeout ( PAGE_WAIT )
303+ await page . waitForSelector ( selectors . NETWORKS_IN_CONTROL_PANEL_SELECTOR )
304+
305+ const network_items = ( await page . $$ ( selectors . NETWORK_ITEMS_CONTROL_PANEL_SELECTOR ) ) . length ;
306+ await expect ( network_items ) . toEqual ( 3 )
307+
308+ console . log ( 'Results filtered successfully' )
309+
310+ } )
311+
312+
313+ } ) ;
0 commit comments