Skip to content

Commit da7c9df

Browse files
For testing: use different servers with different ports for nextjs app
1 parent 1accb2b commit da7c9df

File tree

5 files changed

+31
-18
lines changed

5 files changed

+31
-18
lines changed

packages/devextreme-cli/testing/__tests__/nextjs-ts.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const { nextjsTs } = require('../env.nextjs');
22
const testAppTemplate = require('../app-template.test.shared.js');
33
testAppTemplate(nextjsTs, {
44
port: 3001,
5+
useDifferentPorts: true,
56
urls: {
67
profile: 'pages/profile',
78
tasks: 'pages/tasks',

packages/devextreme-cli/testing/app-template.test.shared.js

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,52 +2,56 @@ const path = require('path');
22
const waitOn = require('wait-on');
33
const ip = require('ip');
44
const getBrowser = require('./utils/puppeteer').getBrowser;
5-
65
const { viewports, themes, layouts } = require('./constants');
76
const DevServer = require('./dev-server');
87

98
const defaultLayout = 'side-nav-outer-toolbar';
109

11-
module.exports = (env, { port, urls } = { port: '8080', urls: {} }) => {
12-
const appUrl = `http://${ip.address()}:${port}/`;
10+
module.exports = (env, { port, urls, useDifferentPorts } = { port: '8080', urls: {}, useDifferentPorts: false }) => {
1311
const diffSnapshotsDir = path.join('testing/__tests__/__diff_snapshots__', env.engine);
14-
1512
const pageUrls = {
1613
profile: 'profile',
1714
tasks: 'tasks',
1815
page: `${(env.engine === 'angular' ? 'pages/' : '')}new-page`,
1916
'change-password': 'change-password/123',
2017
...urls,
2118
};
22-
23-
const getPageURL = (name) => `${appUrl}${(env.engine.indexOf('nextjs') !== 0 ? '#/' : '')}${pageUrls[name]}`;
24-
const devServer = new DevServer(env, { port });
19+
let currentPort = port;
2520

2621
describe(`${env.engine} app-template`, () => {
2722
let browser;
2823
let page;
2924

30-
beforeAll(async() => {
25+
/* beforeAll(async() => {
3126
browser = await getBrowser();
3227
page = await browser.newPage();
3328
});
3429
3530
afterAll(async() => {
31+
console.log('-----afterAll---CLOSE-->', Boolean(process.env.LAUNCH_BROWSER));
3632
await (Boolean(process.env.LAUNCH_BROWSER) ? browser : page).close();
37-
});
33+
}); */
3834

3935
Object.keys(themes).forEach((theme) => {
40-
4136
describe(theme, () => {
4237
layouts.forEach((layout) => {
4338
const isDefaultLayout = layout === defaultLayout;
4439

4540
describe(layout, () => {
46-
41+
const getPageURL = (name) => `${appUrl}${(env.engine.indexOf('nextjs') !== 0 ? '#/' : '')}${pageUrls[name]}`;
42+
console.log('----currentPort------>', currentPort);
43+
let devServer;
44+
let appUrl;
4745

4846
beforeAll(async() => {
47+
appUrl = `http://${ip.address()}:${currentPort}/`;
48+
devServer = new DevServer(env, { port: currentPort });
49+
50+
browser = await getBrowser();
51+
page = await browser.newPage();
52+
4953
try {
50-
console.log('----beforeAll---->');
54+
console.log('----beforeAll--wait-->', currentPort);
5155
await waitOn({
5256
reverse: true,
5357
resources: [appUrl],
@@ -63,6 +67,7 @@ module.exports = (env, { port, urls } = { port: '8080', urls: {} }) => {
6367
timeout: 30000,
6468
interval: 100
6569
});
70+
console.log('-----SERVER READY----->');
6671
} catch(e) {
6772
// NOTE jest@27 will fail test, but jest@26 - not
6873
console.log('-----ERROR----->', e);
@@ -74,20 +79,26 @@ module.exports = (env, { port, urls } = { port: '8080', urls: {} }) => {
7479
console.log('----afterAll---before stop--->');
7580
await devServer.stop();
7681
console.log('----afterAll---after stop--->');
77-
82+
if(useDifferentPorts) {
83+
currentPort++;
84+
}
85+
await (Boolean(process.env.LAUNCH_BROWSER) ? browser : page).close();
7886
});
7987

8088
Object.keys(viewports).forEach((viewportName) => {
8189
const viewport = viewports[viewportName];
8290

8391
async function openPage(url, options) {
84-
await new Promise((resolve) => setTimeout(resolve, 500));
92+
console.log('----openPage------>');
8593
await page.goto('about:blank');
94+
console.log('----openPage----setViewport-->');
8695
await page.setViewport(viewport);
96+
console.log('----openPage----goto-->', url);
8797
await page.goto(url, {
8898
waitUntil: 'networkidle0',
8999
...options
90100
});
101+
console.log('----openPage----waitForSelector(\'.with-footer\')-->');
91102
await page.waitForSelector('.with-footer');
92103
await page.waitForTimeout(3000);
93104
}

packages/devextreme-cli/testing/dev-server.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ module.exports = class DevServer {
2828

2929
async build() {
3030
try {
31+
fs.rmSync(this.env.deployPath, { recursive: true, force: true });
3132
fs.mkdirSync(this.env.deployPath, { recursive: true });
3233

3334
await runCommand('npm', this.env.npmArgs, {

packages/devextreme-cli/testing/env.nextjs.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function getConfig({ engine, template, fileExtension, templateExtension, transpi
1111
const appName = 'my-app';
1212
const sandboxPath = path.join(process.cwd(), `./testing/sandbox/${engine}`);
1313
const appPath = path.join(sandboxPath, appName);
14-
const appLayoutPath = path.join(sandboxPath, appName, `src/app/layout.${templateExtension}`);
14+
const appLayoutPath = path.join(sandboxPath, appName, `src/app/pages/layout.${templateExtension}`);
1515

1616
const config = {
1717
engine: engine,
@@ -52,6 +52,7 @@ function getConfig({ engine, template, fileExtension, templateExtension, transpi
5252
};
5353

5454
config.setLayout = (layoutName) => {
55+
console.log('------setLayout---->', layoutName);
5556
const regexToFind = /SideNav\w+Toolbar as SideNavBarLayout/g;
5657
const newSubStr = `${classify(layoutName)} as SideNavBarLayout`;
5758
const data = fs.readFileSync(appLayoutPath, 'utf8');

packages/devextreme-cli/testing/nextjs-server.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ module.exports = class NextJsServer {
2525
}
2626

2727
async start() {
28-
await new Promise((resolve) => setTimeout(resolve, 1000));
29-
console.log('----RUN START SERVER CMD------>');
28+
console.log('----RUN START SERVER CMD----port-->', this.port);
3029
({ proc: this.proc } = await runCommand('npx', ['next', 'start', `-p ${this.port}`], {
3130
cwd: this.env.appPath,
3231
detached: true,
@@ -53,7 +52,7 @@ module.exports = class NextJsServer {
5352

5453
let pid;
5554
while(pid = getPidByPort(this.port)) {
56-
console.log(`-----NEXTJS SERVER-start() kill for port ${this.port} ---->`, pid);
55+
console.log(`-----NEXTJS SERVER-stop() kill for port ${this.port} ---->`, pid);
5756
killProcByPid(pid);
5857
await new Promise((resolve) => setTimeout(resolve, 5000));
5958
}

0 commit comments

Comments
 (0)