From 6581c225c027b1ce5bf2f1cfcfa75e7f359708cd Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Wed, 15 Apr 2026 15:37:12 +0200 Subject: [PATCH] Replace expect.js with node:assert/strict MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit expect.js is unmaintained and unnecessary — Node's built-in assert module covers all our assertion patterns. This also removes expect.js from package.json dependencies. Made-with: Cursor --- test/package-lock.json | 11 ----------- test/package.json | 1 - test/test.js | 14 +++++++------- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/test/package-lock.json b/test/package-lock.json index c873da8..61abd86 100644 --- a/test/package-lock.json +++ b/test/package-lock.json @@ -10,7 +10,6 @@ "license": "ISC", "dependencies": { "chromedriver": "^144.0.0", - "expect.js": "^0.3.1", "mocha": "^11.7.5", "selenium-webdriver": "^4.40.0", "superagent": "^10.3.0" @@ -671,11 +670,6 @@ "node": ">=0.10.0" } }, - "node_modules/expect.js": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", - "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=" - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -2802,11 +2796,6 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, - "expect.js": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", - "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=" - }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", diff --git a/test/package.json b/test/package.json index 9ce0ae2..e8d86a6 100644 --- a/test/package.json +++ b/test/package.json @@ -10,7 +10,6 @@ "license": "ISC", "dependencies": { "chromedriver": "^144.0.0", - "expect.js": "^0.3.1", "mocha": "^11.7.5", "selenium-webdriver": "^4.40.0", "superagent": "^10.3.0" diff --git a/test/test.js b/test/test.js index 6b4b68a..097c558 100644 --- a/test/test.js +++ b/test/test.js @@ -7,7 +7,7 @@ require('chromedriver'); const execSync = require('child_process').execSync, - expect = require('expect.js'), + assert = require('node:assert/strict'), fs = require('fs'), path = require('path'), superagent = require('superagent'), @@ -50,7 +50,7 @@ describe('Application life cycle test', function () { const currentUrl = await browser.getCurrentUrl(); if (!currentUrl.includes(app.domain)) return; - expect(this.currentTest.title).to.be.a('string'); + assert.strictEqual(typeof this.currentTest.title, 'string'); const screenshotData = await browser.takeScreenshot(); fs.writeFileSync(`./screenshots/${new Date().getTime()}-${this.currentTest.title.replaceAll(' ', '_')}.png`, screenshotData, 'base64'); @@ -59,7 +59,7 @@ describe('Application life cycle test', function () { function getAppInfo() { var inspect = JSON.parse(execSync('cloudron inspect')); app = inspect.apps.filter(function (a) { return a.location.indexOf(LOCATION) === 0; })[0]; - expect(app).to.be.an('object'); + assert.ok(app && typeof app === 'object'); } function baseUrl() { @@ -152,8 +152,8 @@ describe('Application life cycle test', function () { const response = await superagent.get(`${baseUrl()}/ext.php?f=xExtension-StickyFeeds/static/script.js&t=js`) .buffer(true) .ok(() => true); - expect(response.statusCode).to.be(200); - expect(response.text).to.contain('sticky_feeds'); // relies on the buffer flag above + assert.strictEqual(response.statusCode, 200); + assert.ok(response.text.includes('sticky_feeds')); // relies on the buffer flag above } xit('build app', function () { execSync('cloudron build', EXEC_ARGS); }); @@ -204,7 +204,7 @@ describe('Application life cycle test', function () { execSync('cloudron configure --location ' + LOCATION + '2 --app ' + app.id, EXEC_ARGS); var inspect = JSON.parse(execSync('cloudron inspect')); app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0]; - expect(app).to.be.an('object'); + assert.ok(app && typeof app === 'object'); }); it('can login OIDC', loginOIDC.bind(null, USERNAME, PASSWORD)); @@ -226,7 +226,7 @@ describe('Application life cycle test', function () { execSync('cloudron update --app ' + app.id, EXEC_ARGS); var inspect = JSON.parse(execSync('cloudron inspect')); app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0]; - expect(app).to.be.an('object'); + assert.ok(app && typeof app === 'object'); }); it('subscription exists', subscriptionExists);