Skip to content

Commit 267c336

Browse files
Merge pull request #795 from MetaCell/codefresh/tests
adding if for when tests are from local to skip the login
2 parents ba52bd5 + 9288711 commit 267c336

17 files changed

+1553
-1294
lines changed

tests/frontend/e2e/jest-puppeteer.config.js

-11
This file was deleted.

tests/frontend/e2e/jest.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module.exports = {
22
verbose: true,
3-
preset: "jest-puppeteer",
3+
// preset: "jest-puppeteer",
44
testRegex : "(tests/Test.*|(\\.|/)(test|spec))\\.[jt]sx?$",
55
setupFilesAfterEnv: ['./tests/setupTests.js'],
66
};

tests/frontend/e2e/package.json

+12-8
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44
"description": "NetPyNe UI tests",
55
"license": "unlicensed",
66
"scripts": {
7-
"test": "jest --verbose Tut#1_smoke && jest --verbose ExperimentManager_Tut#1",
7+
"test": "sleep 60 && npm run simple_tutorials_test && npm run complex_tutorials_test && npm run features_test",
8+
"puppeteer_test": "jest --verbose",
9+
"simple_tutorials_test": "sleep 60 && jest --verbose Tut#1_smoke Tut#2_smoke Tut#4_smoke",
10+
"complex_tutorials_test": "jest --verbose Tut#3a_smoke Tut#3b_smoke Tut#3c_smoke",
11+
"features_test": "jest --verbose ControlPanel SaveOpenFile RxD EEG_and_Dipole_Tut#1 ExperimentManager_Tut#1",
812
"EEG_Dipole_test": "jest --verbose EEG_and_Dipole_Tut#1 ",
913
"Experiment_Manager_test": "jest --verbose ExperimentManager_Tut#1 ",
10-
"Tutorial_1_test":"jest --verbose Tut#1_smoke ",
11-
"Tutorial_2_test":"jest --verbose Tut#2_smoke ",
12-
"Tutorial_3A_test":"jest --verbose Tut#3a_smoke ",
13-
"Tutorial_3B_test":"jest --verbose Tut#3b_smoke ",
14-
"Tutorial_3C_test":"jest --verbose Tut#3c_smoke ",
15-
"Tutorial_4_test":"jest --verbose Tut#4_smoke ",
14+
"Tutorial_1_test": "jest --verbose Tut#1_smoke ",
15+
"Tutorial_2_test": "jest --verbose Tut#2_smoke ",
16+
"Tutorial_3A_test": "jest --verbose Tut#3a_smoke ",
17+
"Tutorial_3B_test": "jest --verbose Tut#3b_smoke ",
18+
"Tutorial_3C_test": "jest --verbose Tut#3c_smoke ",
19+
"Tutorial_4_test": "jest --verbose Tut#4_smoke ",
1620
"Control_Panel_test": "jest --verbose ControlPanel ",
1721
"Save_Open_File_test": "jest --verbose SaveOpenFile",
1822
"RxD_test": "jest --verbose RxD",
@@ -50,4 +54,4 @@
5054
]
5155
}
5256
}
53-
}
57+
}

tests/frontend/e2e/tests/ControlPanel.test.js

+117-94
Large diffs are not rendered by default.

tests/frontend/e2e/tests/EEG_and_Dipole_Tut#1.test.js

+107-85
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
//IMPORTS:
22
import 'expect-puppeteer';
3+
import puppeteer from 'puppeteer';
34
import { click } from './utils';
45
import { toMatchImageSnapshot } from 'jest-image-snapshot'
56
expect.extend({ toMatchImageSnapshot })
@@ -36,55 +37,76 @@ const PASSWORD = 'testpassword'
3637
//TESTS:
3738

3839
jest.setTimeout(300000);
40+
let browser_EEG_Dipole;
41+
let EEG_Dipole_page;
3942

4043
beforeAll(async () => {
41-
await page.goto(baseURL);
42-
await page.waitForSelector(selectors.LOGIN_PAGE_SELECTOR);
43-
await page.waitForSelector(selectors.USERNAME_SELECTOR)
44-
await expect(page)
45-
.toFill(selectors.USERNAME_SELECTOR, USERNAME, { timeout: TIMEOUT });
46-
47-
await page.waitForSelector(selectors.PASSWORD_SELECTOR)
48-
await expect(page)
49-
.toFill(selectors.PASSWORD_SELECTOR, PASSWORD, { timeout: TIMEOUT });
50-
51-
await page.click(selectors.LOGIN_BUTTON_SELECTOR)
52-
// Wait for initial loading spinner to disappear
53-
await page.waitForFunction(() => {
54-
let el = document.querySelector('#loading-spinner');
55-
return el == null || el.clientHeight === 0;
56-
}, { timeout: TIMEOUT });
57-
});
5844

45+
browser_EEG_Dipole = await puppeteer.launch(
46+
{
47+
headless: 'new',
48+
args: ['--no-sandbox', '--disable-setuid-sandbox'],
49+
defaultViewport: {
50+
width: 1300,
51+
height: 1024
52+
},
53+
}
54+
);
55+
EEG_Dipole_page = await browser_EEG_Dipole.newPage();
56+
await EEG_Dipole_page.goto(baseURL);
57+
if (baseURL.includes('test.netpyne.metacell.us')) {
58+
console.log('Logging in as test user ...')
59+
await EEG_Dipole_page.waitForSelector(selectors.LOGIN_PAGE_SELECTOR);
60+
await EEG_Dipole_page.waitForSelector(selectors.USERNAME_SELECTOR)
61+
await expect(EEG_Dipole_page)
62+
.toFill(selectors.USERNAME_SELECTOR, USERNAME, { timeout: TIMEOUT });
63+
64+
await EEG_Dipole_page.waitForSelector(selectors.PASSWORD_SELECTOR)
65+
await expect(EEG_Dipole_page)
66+
.toFill(selectors.PASSWORD_SELECTOR, PASSWORD, { timeout: TIMEOUT });
67+
68+
await EEG_Dipole_page.click(selectors.LOGIN_BUTTON_SELECTOR)
69+
// Wait for initial loading spinner to disappear
70+
await EEG_Dipole_page.waitForFunction(() => {
71+
let el = document.querySelector('#loading-spinner');
72+
return el == null || el.clientHeight === 0;
73+
}, { timeout: TIMEOUT });
74+
console.log('Logged in successfully')
75+
}
76+
});
5977

78+
afterAll(async () => {
79+
// Close the browser instance after all tests have run
80+
await browser_EEG_Dipole.close();
81+
});
6082

6183
describe('EEG and Dipole Plot Test using Tutorial#1', () => {
6284

6385
it('Open new page', async () => {
6486

6587
console.log('Opening a new NetPyNE page')
6688

67-
await page.on("dialog", dialog =>
89+
await EEG_Dipole_page.on("dialog", dialog =>
6890
dialog.accept());
6991

70-
await page.waitForSelector(selectors.SELECT_CELL_BUTTON_SELECTOR, { timeout: TIMEOUT * 6, visible: true })
71-
await page.waitForSelector(selectors.FILE_TAB_SELECTOR, { timeout: PAGE_WAIT * 3 })
72-
await page.waitForTimeout(PAGE_WAIT)
73-
await page.click(selectors.FILE_TAB_SELECTOR)
74-
await page.waitForSelector(selectors.NEW_FILE_SELECTOR, { timeout: PAGE_WAIT * 3 })
75-
await page.waitForTimeout(PAGE_WAIT)
76-
await page.click(selectors.NEW_FILE_SELECTOR)
77-
await page.waitForTimeout(PAGE_WAIT)
78-
await page.waitForSelector(selectors.CONFIRM_NEW_PAGE_SELECTOR)
79-
await page.click(selectors.CONFIRM_NEW_PAGE_SELECTOR)
80-
await page.waitForTimeout(PAGE_WAIT * 2)
81-
82-
await page.waitForFunction(() => {
92+
await EEG_Dipole_page.waitForSelector(selectors.SELECT_CELL_BUTTON_SELECTOR, { timeout: TIMEOUT * 6, visible: true })
93+
await EEG_Dipole_page.waitForSelector(selectors.FILE_TAB_SELECTOR, { timeout: PAGE_WAIT * 3 })
94+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
95+
await EEG_Dipole_page.click(selectors.FILE_TAB_SELECTOR)
96+
await EEG_Dipole_page.waitForSelector(selectors.NEW_FILE_SELECTOR, { timeout: PAGE_WAIT * 3 })
97+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
98+
await EEG_Dipole_page.click(selectors.NEW_FILE_SELECTOR)
99+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
100+
await EEG_Dipole_page.waitForSelector(selectors.CONFIRM_NEW_PAGE_SELECTOR)
101+
await EEG_Dipole_page.click(selectors.CONFIRM_NEW_PAGE_SELECTOR)
102+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 2)
103+
104+
await EEG_Dipole_page.waitForFunction(() => {
83105
let el = document.querySelector('#loading-spinner');
84106
return el == null || el.clientHeight === 0;
85107
}, { timeout: TIMEOUT });
86108

87-
await page.waitForSelector(selectors.SELECT_CELL_BUTTON_SELECTOR, { timeout: TIMEOUT * 10 })
109+
await EEG_Dipole_page.waitForSelector(selectors.SELECT_CELL_BUTTON_SELECTOR, { timeout: TIMEOUT * 10 })
88110

89111
console.log('Page opened successfully')
90112

@@ -93,15 +115,15 @@ describe('EEG and Dipole Plot Test using Tutorial#1', () => {
93115

94116
it('Load Tutorial#1', async () => {
95117

96-
await page.waitForTimeout(PAGE_WAIT * 3)
97-
await page.waitForSelector(selectors.SELECT_CELL_BUTTON_SELECTOR, { timeout: TIMEOUT * 2 })
98-
await page.waitForTimeout(PAGE_WAIT * 2)
99-
await page.click(selectors.TUTORIALS_BUTTON_SELECTOR, { timeout: TIMEOUT })
118+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 3)
119+
await EEG_Dipole_page.waitForSelector(selectors.SELECT_CELL_BUTTON_SELECTOR, { timeout: TIMEOUT * 2 })
120+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 2)
121+
await EEG_Dipole_page.click(selectors.TUTORIALS_BUTTON_SELECTOR, { timeout: TIMEOUT })
100122

101123
await console.log('Loading Tutorial #1')
102-
await page.click(selectors.TUTORIAL_1_SELECTOR, { timeout: TIMEOUT })
103-
await page.waitForSelector(selectors.PYR_CELL_SELECTOR)
104-
await page.waitForTimeout(PAGE_WAIT)
124+
await EEG_Dipole_page.click(selectors.TUTORIAL_1_SELECTOR, { timeout: TIMEOUT })
125+
await EEG_Dipole_page.waitForSelector(selectors.PYR_CELL_SELECTOR)
126+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
105127

106128

107129
})
@@ -110,40 +132,40 @@ describe('EEG and Dipole Plot Test using Tutorial#1', () => {
110132

111133
await console.log('Setting Recording configuration')
112134

113-
await page.waitForSelector(selectors.CONFIGURATION_TAB_SELECTOR)
114-
await page.click(selectors.CONFIGURATION_TAB_SELECTOR)
135+
await EEG_Dipole_page.waitForSelector(selectors.CONFIGURATION_TAB_SELECTOR)
136+
await EEG_Dipole_page.click(selectors.CONFIGURATION_TAB_SELECTOR)
115137

116-
await page.waitForSelector(selectors.RECORDING_CONFIGURATION_TAB_SELECTOR)
117-
await page.click(selectors.RECORDING_CONFIGURATION_TAB_SELECTOR)
118-
await page.waitForTimeout(PAGE_WAIT)
138+
await EEG_Dipole_page.waitForSelector(selectors.RECORDING_CONFIGURATION_TAB_SELECTOR)
139+
await EEG_Dipole_page.click(selectors.RECORDING_CONFIGURATION_TAB_SELECTOR)
140+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
119141

120-
await page.waitForSelector(selectors.TRACES_TO_RECORD_SELECTOR)
121-
await page.waitForTimeout(PAGE_WAIT)
122-
await page.waitForSelector(selectors.DIPOLE_LFPYKIT_SELECTOR)
142+
await EEG_Dipole_page.waitForSelector(selectors.TRACES_TO_RECORD_SELECTOR)
143+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
144+
await EEG_Dipole_page.waitForSelector(selectors.DIPOLE_LFPYKIT_SELECTOR)
123145
// await expect(page).toClick(selectors.DIPOLE_LFPYKIT_SELECTOR)
124-
await page.waitForTimeout(PAGE_WAIT)
125-
await page.click(selectors.DIPOLE_LFPYKIT_SELECTOR)
126-
await page.waitForTimeout(PAGE_WAIT)
146+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
147+
await EEG_Dipole_page.click(selectors.DIPOLE_LFPYKIT_SELECTOR)
148+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
127149

128150
})
129151

130152
it('Create network', async () => {
131153

132-
await page.waitForSelector(selectors.MODEL_BUTTON_SELECTOR)
133-
await page.click(selectors.MODEL_BUTTON_SELECTOR, { timeout: TIMEOUT });
134-
await page.waitForSelector(selectors.CREATE_NETWORK_SELECTOR)
135-
await page.click(selectors.CREATE_NETWORK_SELECTOR, { timeout: TIMEOUT });
154+
await EEG_Dipole_page.waitForSelector(selectors.MODEL_BUTTON_SELECTOR)
155+
await EEG_Dipole_page.click(selectors.MODEL_BUTTON_SELECTOR, { timeout: TIMEOUT });
156+
await EEG_Dipole_page.waitForSelector(selectors.CREATE_NETWORK_SELECTOR)
157+
await EEG_Dipole_page.click(selectors.CREATE_NETWORK_SELECTOR, { timeout: TIMEOUT });
136158

137159
await console.log('Create network')
138160

139-
await page.waitForSelector(selectors.DISABLED_EEG_PLOT_SELECTOR, { timeout: TIMEOUT * 3 })
140-
await page.waitForSelector(selectors.DISABLED_DIPOLE_PLOT_SELECTOR, { timeout: TIMEOUT * 3 })
161+
await EEG_Dipole_page.waitForSelector(selectors.DISABLED_EEG_PLOT_SELECTOR, { timeout: TIMEOUT * 3 })
162+
await EEG_Dipole_page.waitForSelector(selectors.DISABLED_DIPOLE_PLOT_SELECTOR, { timeout: TIMEOUT * 3 })
141163

142-
await page.waitForTimeout(PAGE_WAIT)
164+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT)
143165

144166
await console.log('... taking snapshot ...');
145-
await page.waitForTimeout(PAGE_WAIT);
146-
expect(await page.screenshot())
167+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT);
168+
expect(await EEG_Dipole_page.screenshot())
147169
.toMatchImageSnapshot({
148170
...SNAPSHOT_OPTIONS,
149171
customSnapshotIdentifier: 'Tutorial#1 Network'
@@ -152,35 +174,35 @@ describe('EEG and Dipole Plot Test using Tutorial#1', () => {
152174

153175
it('Simulate network', async () => {
154176

155-
await page.waitForSelector(selectors.SIMULATE_BUTTON_SELECTOR)
156-
await page.click(selectors.SIMULATE_BUTTON_SELECTOR, { timeout: TIMEOUT });
177+
await EEG_Dipole_page.waitForSelector(selectors.SIMULATE_BUTTON_SELECTOR)
178+
await EEG_Dipole_page.click(selectors.SIMULATE_BUTTON_SELECTOR, { timeout: TIMEOUT });
157179

158180
await console.log('Simulate network')
159181

160-
await page.waitForSelector(selectors.SIMULATION_PAGE_SELECTOR, { timeout: TIMEOUT * 2 });
182+
await EEG_Dipole_page.waitForSelector(selectors.SIMULATION_PAGE_SELECTOR, { timeout: TIMEOUT * 2 });
161183

162-
await page.waitForSelector(selectors.RASTER_PLOT_SELECTOR, { timeout: TIMEOUT * 5 })
163-
await page.waitForSelector(selectors.EEG_PLOT_SELECTOR, { timeout: TIMEOUT * 5 })
164-
await page.waitForSelector(selectors.DIPOLE_PLOT_SELECTOR, { timeout: TIMEOUT * 5 })
184+
await EEG_Dipole_page.waitForSelector(selectors.RASTER_PLOT_SELECTOR, { timeout: TIMEOUT * 5 })
185+
await EEG_Dipole_page.waitForSelector(selectors.EEG_PLOT_SELECTOR, { timeout: TIMEOUT * 5 })
186+
await EEG_Dipole_page.waitForSelector(selectors.DIPOLE_PLOT_SELECTOR, { timeout: TIMEOUT * 5 })
165187
});
166188

167189
it('Dipole Plot', async () => {
168190

169-
await page.waitForTimeout(PAGE_WAIT * 2);
170-
await page.click(selectors.DIPOLE_PLOT_SELECTOR)
171-
await page.waitForSelector(selectors.CANVAS_SELECTOR, { timeout: TIMEOUT })
191+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 2);
192+
await EEG_Dipole_page.click(selectors.DIPOLE_PLOT_SELECTOR)
193+
await EEG_Dipole_page.waitForSelector(selectors.CANVAS_SELECTOR, { timeout: TIMEOUT })
172194

173195
await console.log('View Dipole Plot ...')
174196

175-
await page.waitForTimeout(PAGE_WAIT * 20);
176-
await page.click(selectors.CONNECTIONS_PLOT_SELECTOR, { timeout: TIMEOUT })
177-
await page.waitForTimeout(PAGE_WAIT);
178-
await page.click(selectors.DIPOLE_PLOT_SELECTOR)
179-
await page.waitForSelector(selectors.CANVAS_SELECTOR, { timeout: TIMEOUT })
180-
await page.waitForTimeout(PAGE_WAIT * 3);
197+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 20);
198+
await EEG_Dipole_page.click(selectors.CONNECTIONS_PLOT_SELECTOR, { timeout: TIMEOUT })
199+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT);
200+
await EEG_Dipole_page.click(selectors.DIPOLE_PLOT_SELECTOR)
201+
await EEG_Dipole_page.waitForSelector(selectors.CANVAS_SELECTOR, { timeout: TIMEOUT })
202+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 3);
181203

182204
await console.log('... taking snapshot ...');
183-
expect(await page.screenshot())
205+
expect(await EEG_Dipole_page.screenshot())
184206
.toMatchImageSnapshot({
185207
...SNAPSHOT_OPTIONS,
186208
customSnapshotIdentifier: 'Dipole Plot'
@@ -190,21 +212,21 @@ describe('EEG and Dipole Plot Test using Tutorial#1', () => {
190212

191213
it('EEG Plot', async () => {
192214

193-
await page.waitForTimeout(PAGE_WAIT * 2);
194-
await page.click(selectors.EEG_PLOT_SELECTOR)
195-
await page.waitForSelector(selectors.CANVAS_SELECTOR, { timeout: TIMEOUT })
215+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 2);
216+
await EEG_Dipole_page.click(selectors.EEG_PLOT_SELECTOR)
217+
await EEG_Dipole_page.waitForSelector(selectors.CANVAS_SELECTOR, { timeout: TIMEOUT })
196218

197219
await console.log('View EEG Plot ...')
198220

199-
await page.waitForTimeout(PAGE_WAIT * 25);
200-
await page.click(selectors.CONNECTIONS_PLOT_SELECTOR, { timeout: TIMEOUT })
201-
await page.waitForTimeout(PAGE_WAIT * 2);
202-
await page.click(selectors.EEG_PLOT_SELECTOR)
203-
await page.waitForSelector(selectors.CANVAS_SELECTOR, { timeout: TIMEOUT })
204-
await page.waitForTimeout(PAGE_WAIT * 3);
221+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 25);
222+
await EEG_Dipole_page.click(selectors.CONNECTIONS_PLOT_SELECTOR, { timeout: TIMEOUT })
223+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 2);
224+
await EEG_Dipole_page.click(selectors.EEG_PLOT_SELECTOR)
225+
await EEG_Dipole_page.waitForSelector(selectors.CANVAS_SELECTOR, { timeout: TIMEOUT })
226+
await EEG_Dipole_page.waitForTimeout(PAGE_WAIT * 3);
205227

206228
await console.log('... taking snapshot ...');
207-
expect(await page.screenshot())
229+
expect(await EEG_Dipole_page.screenshot())
208230
.toMatchImageSnapshot({
209231
...SNAPSHOT_OPTIONS,
210232
customSnapshotIdentifier: 'EEG Plot'

0 commit comments

Comments
 (0)