Skip to content

Commit 7e4b07d

Browse files
add nextjs ap to tests on CI
1 parent e0ca1fd commit 7e4b07d

File tree

9 files changed

+27
-50
lines changed

9 files changed

+27
-50
lines changed

packages/devextreme-cli/src/templates/nextjs/application/src/components/change-password-form/ChangePasswordForm.scss

Lines changed: 0 additions & 12 deletions
This file was deleted.

packages/devextreme-cli/src/utility/run-command.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ module.exports = function(commandName, args = [], customConfig = {}) {
2525
});
2626

2727
if(config.detached) {
28+
proc.unref();
2829
resolve({ proc });
2930
}
3031
});
-188 Bytes
Loading

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const { nextjsTs } = require('../env.nextjs');
22
const testAppTemplate = require('../app-template.test.shared.js');
33
testAppTemplate(nextjsTs, {
4-
port: 3000,
54
urls: {
65
profile: 'pages/profile',
76
tasks: 'pages/tasks',

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const { nextjsJs } = require('../env.nextjs');
22
const testAppTemplate = require('../app-template.test.shared.js');
33
testAppTemplate(nextjsJs, {
4-
port: 3000,
54
urls: {
65
profile: 'pages/profile',
76
tasks: 'pages/tasks',

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

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
const path = require('path');
22
const waitOn = require('wait-on');
33
const ip = require('ip');
4-
const getBrowser = require('./utils/puppeteer').getBrowser;
54

5+
const getBrowser = require('./utils/puppeteer').getBrowser;
66
const { viewports, themes, layouts } = require('./constants');
77
const DevServer = require('./dev-server');
88

99
const defaultLayout = 'side-nav-outer-toolbar';
1010

11-
module.exports = (env, { port, urls } = { port: '8080', urls: {} }) => {
12-
const appUrl = `http://${ip.address()}:${port}/`;
11+
module.exports = (env, { port = 8080, urls = {} } = {}) => {
1312
const diffSnapshotsDir = path.join('testing/__tests__/__diff_snapshots__', env.engine);
14-
1513
const pageUrls = {
1614
profile: 'profile',
1715
tasks: 'tasks',
@@ -20,31 +18,25 @@ module.exports = (env, { port, urls } = { port: '8080', urls: {} }) => {
2018
...urls,
2119
};
2220

23-
const getPageURL = (name) => `${appUrl}${(env.engine.indexOf('nextjs') !== 0 ? '#/' : '')}${pageUrls[name]}`;
24-
2521
describe(`${env.engine} app-template`, () => {
26-
let browser;
27-
let page;
28-
29-
beforeAll(async() => {
30-
browser = await getBrowser();
31-
page = await browser.newPage();
32-
});
33-
34-
afterAll(async() => {
35-
await (Boolean(process.env.LAUNCH_BROWSER) ? browser : page).close();
36-
});
37-
3822
Object.keys(themes).forEach((theme) => {
39-
4023
describe(theme, () => {
4124
layouts.forEach((layout) => {
4225
const isDefaultLayout = layout === defaultLayout;
4326

4427
describe(layout, () => {
45-
const devServer = new DevServer(env);
28+
let browser;
29+
let page;
30+
let devServer;
31+
let appUrl;
32+
const getPageURL = (name) => `${appUrl}${(env.engine.indexOf('nextjs') !== 0 ? '#/' : '')}${pageUrls[name]}`;
4633

4734
beforeAll(async() => {
35+
browser = await getBrowser();
36+
page = await browser.newPage();
37+
appUrl = `http://${ip.address()}:${port}/`;
38+
devServer = new DevServer(env, { port });
39+
4840
try {
4941
await devServer.setLayout(layout);
5042
await devServer.setTheme(theme);
@@ -63,13 +55,7 @@ module.exports = (env, { port, urls } = { port: '8080', urls: {} }) => {
6355

6456
afterAll(async() => {
6557
await devServer.stop();
66-
await waitOn({
67-
resources: [appUrl],
68-
reverse: true,
69-
timeout: 10000,
70-
interval: 100,
71-
validateStatus: false
72-
});
58+
await (Boolean(process.env.LAUNCH_BROWSER) ? browser : page).close();
7359
});
7460

7561
Object.keys(viewports).forEach((viewportName) => {
@@ -333,7 +319,7 @@ module.exports = (env, { port, urls } = { port: '8080', urls: {} }) => {
333319
`const a = document.createElement("a");a.href="${getPageURL('change-password')}";a.click()`
334320
);
335321
await page.waitForSelector('form');
336-
322+
await page.mouse.move(0, 0);
337323
await hideScroll();
338324
await page.waitForTimeout(3000);
339325

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ module.exports = class DevServer {
1111
return this.env.engine.indexOf('nextjs') === 0;
1212
}
1313

14-
constructor(env) {
14+
constructor(env, { port }) {
1515
this.env = env;
1616
this.server = this.isNextJs()
17-
? new NextJsServer(this.env)
17+
? new NextJsServer(this.env, { port })
1818
: new WebServer();
1919
}
2020

@@ -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: 1 addition & 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,

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
const runCommand = require('../src/utility/run-command');
22

33
module.exports = class NextJsServer {
4-
constructor(env) {
4+
constructor(env, { port } = { port: 8080 }) {
55
this.proc = null;
66
this.env = env;
7+
this.port = port;
78
}
89

910
async start() {
10-
({ proc: this.proc } = await runCommand('npm', ['run', 'start'], {
11+
({ proc: this.proc } = await runCommand('npx', ['next', 'start', `-p ${this.port}`], {
1112
cwd: this.env.appPath,
12-
detached: true
13+
detached: true,
14+
shell: false,
15+
stdio: 'ignore',
1316
}));
1417
}
1518

16-
stop() {
19+
async stop() {
1720
if(this.proc) {
18-
this.proc.kill('SIGTERM');
21+
process.kill(-this.proc.pid, 'SIGKILL');
1922
}
2023
}
2124
};

0 commit comments

Comments
 (0)