Skip to content

Commit ca534ee

Browse files
committed
fix: something
1 parent d7e1996 commit ca534ee

18 files changed

+68
-48
lines changed

bin/codecept.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const errorHandler = (fn) => async (...args) => {
3131
};
3232

3333
if (process.versions.node && process.versions.node.split('.') && process.versions.node.split('.')[0] < 12) {
34-
outputLib.output.output.error('NodeJS >= 12 is required to run.');
34+
outputLib.output.error('NodeJS >= 12 is required to run.');
3535
outputLib.print();
3636
outputLib.print('Please upgrade your NodeJS engine');
3737
outputLib.print(`Current NodeJS version: ${process.version}`);

lib/ai.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { Configuration, OpenAIApi } from 'openai';
2-
import debug from 'debug';
2+
import createDebugMessages from 'debug';
33
import config from './config.js';
44
import * as output from './output.js';
55
import { removeNonInteractiveElements, minifyHtml, splitByChunks } from './html.js';
66

7+
const debug = createDebugMessages('codeceptjs');
8+
79
debug('codeceptjs:ai');
810

911
const defaultConfig = {

lib/codecept.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ import listener01234 from './listener/timeout.js';
4343

4444
import listener012345 from './listener/exit.js';
4545

46+
import 'chai/register-assert.js';
47+
import 'chai/register-expect.js';
48+
4649
const __dirname = dirname(fileURLToPath(import.meta.url));
4750
const require = createRequire(import.meta.url);
4851

@@ -118,7 +121,7 @@ export default class Codecept {
118121
global.inject = container.support;
119122
global.share = container.share;
120123
global.secret = secret;
121-
global.codecept_debug = output.debug;
124+
global.codecept_debug = output.output.debug;
122125
global.codeceptjs = index; // load all objects
123126
global.Given = stepDefinitions.Given;
124127
global.When = stepDefinitions.When;

lib/container.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,11 @@ function createHelpers(config) {
175175
// check if the helper is the built-in, use the require() syntax.
176176
if (moduleName.startsWith('./helper/')) {
177177
const __dirname = dirname(fileURLToPath(import.meta.url));
178-
HelperClass = importSync(path.resolve(__dirname, moduleName)).default;
178+
try {
179+
HelperClass = importSync(path.resolve(__dirname, moduleName)).default;
180+
} catch (e) {
181+
HelperClass = importSync(path.resolve(__dirname, moduleName));
182+
}
179183
} else {
180184
// check if the new syntax export default HelperName is used and loads the Helper, otherwise loads the module that used old syntax export = HelperName.
181185
HelperClass = importSync(path.resolve(moduleName)).default;

lib/event.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import debug from 'debug';
1+
import createDebugMessages from 'debug';
22

33
import events from 'events';
44
import * as output from './output.js';
55

6+
const debug = createDebugMessages('codeceptjs');
7+
68
debug('codeceptjs:event');
79

810
const dispatcher = new events.EventEmitter();

lib/helper/Expect.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
import { expect } from 'chai';
2-
import * as chai from 'chai';
31
import chai_json_schema from 'chai-json-schema';
42
import chai_match_pattern from 'chai-match-pattern';
53
import chai_exclude from 'chai-exclude';
64
import chai_string from 'chai-string';
5+
import { expect, use } from 'chai';
76
import * as output from '../output.js';
87

9-
chai.use(chai_string);
8+
use(chai_string);
109
// @ts-ignore
11-
chai.use(chai_exclude);
12-
chai.use(chai_match_pattern);
13-
chai.use(chai_json_schema);
10+
use(chai_exclude);
11+
use(chai_match_pattern);
12+
use(chai_json_schema);
1413

1514
/**
1615
* This helper allows performing assertions based on Chai.

lib/interfaces/gherkin.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as Gherkin from '@cucumber/gherkin';
22
import * as Messages from '@cucumber/messages';
33
import { Context, Suite, Test } from 'mocha';
44

5-
import debug from 'debug';
5+
import createDebugMessages from 'debug';
66

77
import { matchStep } from './bdd.js';
88
import * as event from '../event.js';
@@ -13,6 +13,8 @@ import transform from '../transform.js';
1313

1414
import translations0 from '../translation.js';
1515

16+
const debug = createDebugMessages('codeceptjs');
17+
1618
debug('codeceptjs:bdd');
1719

1820
const uuidFn = Messages.IdGenerator.uuid();

lib/listener/steps.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import debug from 'debug';
1+
import createDebugMessages from 'debug';
22
import * as event from '../event.js';
33
import { store } from '../store.js';
44
import * as output from '../output.js';
55

6+
const debug = createDebugMessages('codeceptjs');
7+
68
debug('codeceptjs:steps');
79

810
let currentTest;

lib/pause.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import colors from 'chalk';
22
import readline from 'readline';
33
import ora from 'ora-classic';
4-
import debug from 'debug';
4+
import createDebugMessages from 'debug';
55

66
import container from './container.js';
77
import history from './history.js';
@@ -12,6 +12,8 @@ import * as event from './event.js';
1212
import * as output from './output.js';
1313
import { methodsOfObject } from './utils.js';
1414

15+
const debug = createDebugMessages('codeceptjs');
16+
1517
debug('codeceptjs:pause');
1618

1719
// npm install colors

lib/plugin/autoLogin.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { fileExists, isAsyncFunction } from '../utils.js';
44
import container from '../container.js';
55
import { store } from '../store.js';
66
import recorder from '../recorder.js';
7-
import { debug } from '../output.js';
7+
import * as output from '../output.js';
88

99
const defaultUser = {
1010
fetch: I => I.grabCookie(),
@@ -267,7 +267,7 @@ export default function (config) {
267267
} catch (err) {
268268
throw new Error(`Could not load session from ${fileName}\n${err}`);
269269
}
270-
debug(`Loaded user session for ${name}`);
270+
output.output.debug(`Loaded user session for ${name}`);
271271
}
272272
}
273273

@@ -288,11 +288,11 @@ export default function (config) {
288288

289289
const cookies = await userSession.fetch(I);
290290
if (!cookies) {
291-
debug('Cannot save user session with empty cookies from auto login\'s fetch method');
291+
output.output.debug('Cannot save user session with empty cookies from auto login\'s fetch method');
292292
return;
293293
}
294294
if (config.saveToFile) {
295-
debug(`Saved user session into file for ${name}`);
295+
output.output.debug(`Saved user session into file for ${name}`);
296296
fs.writeFileSync(path.join(global.output_dir, `${name}_session.json`), JSON.stringify(cookies));
297297
}
298298
store[`${name}_session`] = cookies;
@@ -309,12 +309,12 @@ export default function (config) {
309309
userSession.check(I, cookies);
310310
}
311311
recorder.session.catch((err) => {
312-
debug(`Failed auto login for ${name} due to ${err}`);
313-
debug('Logging in again');
312+
output.output.debug(`Failed auto login for ${name} due to ${err}`);
313+
output.output.debug('Logging in again');
314314
recorder.session.start('auto login');
315315
return loginAndSave().then(() => {
316316
recorder.add(() => recorder.session.restore('auto login'));
317-
recorder.catch(() => debug('continue'));
317+
recorder.catch(() => output.output.debug('continue'));
318318
}).catch((err) => {
319319
recorder.session.restore('auto login');
320320
recorder.session.restore('check login');

lib/plugin/coverage.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export default function (config) {
7979
const options = Object.assign(defaultConfig, helper.options, config);
8080

8181
event.dispatcher.on(event.all.before, async () => {
82-
output.debug('*** Collecting coverage for tests ****');
82+
output.output.debug('*** Collecting coverage for tests ****');
8383
});
8484

8585
// Hack! we're going to try to "start" coverage before each step because this is

lib/plugin/heal.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import debug from 'debug';
1+
import createDebugMessages from 'debug';
22
import colors from 'chalk';
33
import Container from '../container.js';
44
import AiAssistant from '../ai';
@@ -7,6 +7,8 @@ import * as event from '../event.js';
77
import * as output from '../output.js';
88
import supportedHelpers from './standardActingHelpers.js';
99

10+
const debug = createDebugMessages('codeceptjs');
11+
1012
debug('codeceptjs:heal');
1113

1214
const defaultConfig = {
@@ -174,11 +176,11 @@ export default function (config = {}) {
174176
});
175177

176178
async function tryToHeal(failedStep, err) {
177-
output.debug(`Running OpenAI to heal ${failedStep.toCode()} step`);
179+
output.output.debug(`Running OpenAI to heal ${failedStep.toCode()} step`);
178180

179181
const codeSnippets = await aiAssistant.healFailedStep(failedStep, err, currentTest);
180182

181-
output.debug(`Received ${codeSnippets.length} suggestions from OpenAI`);
183+
output.output.debug(`Received ${codeSnippets.length} suggestions from OpenAI`);
182184
const I = Container.support('I'); // eslint-disable-line
183185

184186
for (const codeSnippet of codeSnippets) {
@@ -205,7 +207,7 @@ export default function (config = {}) {
205207
}
206208
}
207209

208-
output.debug(`Couldn't heal the code for ${failedStep.toCode()}`);
210+
output.output.debug(`Couldn't heal the code for ${failedStep.toCode()}`);
209211
}
210212
return recorder.promise();
211213
}

lib/plugin/selenoid.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -212,20 +212,20 @@ const selenoid = (config) => {
212212
if (autoStart) {
213213
event.dispatcher.on(event.all.before, () => {
214214
recorder.add('Starting selenoid', () => {
215-
output.debug('Staring Selenoid... ');
215+
output.output.debug('Staring Selenoid... ');
216216
return createAndStart(autoCreate)
217-
.then(() => output.debug('Selenoid started'))
217+
.then(() => output.output.debug('Selenoid started'))
218218
.catch((err) => { throw new Error(err.stack); });
219219
});
220220
});
221221

222222
event.dispatcher.on(event.all.after, () => {
223223
recorder.add('Stopping selenoid', () => {
224-
output.debug('Stopping Selenoid...');
224+
output.output.debug('Stopping Selenoid...');
225225
return wait(SELENOID_STOP_TIMEOUT)
226226
.then(() => deletePassedTests(passedTests))
227227
.then(stopSelenoid)
228-
.then(() => output.debug('Selenoid stopped'))
228+
.then(() => output.output.debug('Selenoid stopped'))
229229
.catch((err) => { throw new Error(err.stack); });
230230
});
231231
});
@@ -263,7 +263,7 @@ export default selenoid;
263263
function videoSaved(test) {
264264
const fileName = `${clearString(test.title)}.mp4`;
265265
const videoFile = path.join(global.output_dir, 'video', fileName);
266-
output.debug(`Video has been saved to file://${videoFile}`);
266+
output.output.debug(`Video has been saved to file://${videoFile}`);
267267
const allureReporter = container.plugins('allure');
268268
if (allureReporter) {
269269
allureReporter.addAttachment('Video', fs.readFileSync(videoFile), 'video/mp4');
@@ -305,21 +305,21 @@ const pullImage = async () => {
305305

306306
console.time('Pulled containers');
307307
if (!stdout.includes('selenoid/video-recorder')) {
308-
output.debug('Pulling selenoid/video-recorder...');
308+
output.output.debug('Pulling selenoid/video-recorder...');
309309
resultPromise = exec('docker pull selenoid/video-recorder:latest-release')
310-
.then(() => output.debug('Pulled in selenoid/video-recorder'));
310+
.then(() => output.output.debug('Pulled in selenoid/video-recorder'));
311311
pulls.push(resultPromise);
312312
}
313313
if (!stdout.includes('selenoid/chrome')) {
314-
output.debug('Pulling selenoid/chrome...');
314+
output.output.debug('Pulling selenoid/chrome...');
315315
resultPromise = exec('docker pull selenoid/chrome:latest')
316-
.then(() => output.debug('Pulled in selenoid/video-recorder'));
316+
.then(() => output.output.debug('Pulled in selenoid/video-recorder'));
317317
pulls.push(resultPromise);
318318
}
319319
if (!stdout.includes('selenoid/firefox')) {
320-
output.debug('Pulling selenoid/firefox...');
320+
output.output.debug('Pulling selenoid/firefox...');
321321
resultPromise = exec('docker pull selenoid/firefox:latest')
322-
.then(() => output.debug('Pulled in selenoid/chrome'));
322+
.then(() => output.output.debug('Pulled in selenoid/chrome'));
323323
pulls.push(resultPromise);
324324
}
325325

@@ -338,7 +338,7 @@ function deletePassedTests(passedTests) {
338338
const deleteLogPromiseList = passedTests.map(clearString).map(test => axios.delete(`${seleniumUrl}/logs/${test}.log`));
339339

340340
return Promise.all(deleteVideoPromiseList.concat(deleteLogPromiseList))
341-
.then(() => output.debug('Deleted videos and logs for all passed tests'))
341+
.then(() => output.output.debug('Deleted videos and logs for all passed tests'))
342342
.catch(err => output.output.error(`Error while deleting video and log files ${err.stack}`));
343343
}
344344

lib/plugin/wdio.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import debug from 'debug';
1+
import createDebugMessages from 'debug';
22

33
import container from '../container.js';
44
import mainConfig from '../config.js';
55
import recorder from '../recorder.js';
66
import * as event from '../event.js';
77
import * as output from '../output.js';
88

9+
const debug = createDebugMessages('codeceptjs');
10+
911
debug('codeceptjs:plugin:wdio');
1012

1113
const defaultConfig = {
@@ -218,7 +220,7 @@ export default (config) => {
218220
} else {
219221
await launcher.onPrepare(config, config.capabilities);
220222
}
221-
output.debug(`Started ${name}`);
223+
output.output.debug(`Started ${name}`);
222224
});
223225
});
224226
}
@@ -227,7 +229,7 @@ export default (config) => {
227229
event.dispatcher.on(event.all.after, () => {
228230
recorder.add(`launcher ${name} start`, async () => {
229231
await launcher.onComplete(process.exitCode, config, config.capabilities);
230-
output.debug(`Stopped ${name}`);
232+
output.output.debug(`Stopped ${name}`);
231233
});
232234
});
233235
}

lib/recorder.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import debug from 'debug';
21
import promiseRetry from 'promise-retry';
2+
import createDebugMessages from 'debug';
33
import { printObjectProperties } from './utils.js';
44
import * as output from './output.js';
55

6-
debug('codeceptjs:recorder');
6+
const debug = createDebugMessages('codeceptjs:recorder');
77

88
const MAX_TASKS = 100;
99

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,8 @@
6969
},
7070
"dependencies": {
7171
"@babel/core": "7.23.9",
72-
"@codeceptjs/configure": "0.10.0",
73-
"@codeceptjs/helper": "2.0.3",
7472
"@codeceptjs/configure": "1.0.1",
73+
"@codeceptjs/helper": "2.0.3",
7574
"@cucumber/cucumber-expressions": "17",
7675
"@cucumber/gherkin": "26",
7776
"@cucumber/messages": "24.0.1",
@@ -80,7 +79,7 @@
8079
"arrify": "2.0.1",
8180
"axios": "1.6.7",
8281
"babel-register-esm": "^1.2.5",
83-
"chai": "5.1.0",
82+
"chai": "4.4.1",
8483
"chai-deep-match": "1.2.1",
8584
"chai-exclude": "2.1.0",
8685
"chai-json-schema": "1.5.1",
@@ -92,6 +91,7 @@
9291
"cross-spawn": "7.0.3",
9392
"css-to-xpath": "0.1.0",
9493
"csstoxpath": "1.6.0",
94+
"debug": "^4.3.4",
9595
"devtools": "8.29.1",
9696
"envinfo": "7.11.0",
9797
"escape-string-regexp": "4.0.0",

test/acceptance/gherkin/steps.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const I = actor();
1+
const { I } = inject();
22

33
Given('I opened website', () => {
44
// From "gherkin/basic.feature" {"line":8,"column":5}

test/acceptance/session_test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import assert from 'assert';
1+
const assert = require('assert');
22

33
const { event } = codeceptjs;
44

0 commit comments

Comments
 (0)