From 7f1fd02177a9e34e44a8b4bc8ae5b0b0d5b07160 Mon Sep 17 00:00:00 2001 From: Austin Nazworth Date: Wed, 14 Feb 2024 16:20:19 -0500 Subject: [PATCH] Update tests for modern node - Updated Karma packages to latest versions - Switched to playwright Firefox from system Firefox due to deprecated dependencies - Switched testing script from Gulp to npm - Updated README instruction for running unit tests Change-Id: Ie338c70bed145fd1c1439eb21247c5e467083514 --- README.rst | 2 +- gulp/tasks/unit.js | 13 ------------ package.json | 17 +++++++++------ test/karma.conf.js | 53 +++++++++++++++++++++++++--------------------- 4 files changed, 40 insertions(+), 45 deletions(-) delete mode 100644 gulp/tasks/unit.js diff --git a/README.rst b/README.rst index 183cc7d..632d849 100644 --- a/README.rst +++ b/README.rst @@ -96,7 +96,7 @@ Data should be written to :code:`stackviz-html/data/` using Testing ======= * Python tests: :code:`tox -e py36` -* JavaScript unit tests: :code:`gulp unit` +* JavaScript unit tests: :code:`npm run test` * JavaScript E2E tests: :code:`gulp e2e` Manuals & Developer Docs diff --git a/gulp/tasks/unit.js b/gulp/tasks/unit.js deleted file mode 100644 index 79e746c..0000000 --- a/gulp/tasks/unit.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var path = require('path'); - -var gulp = require('gulp'); -var karma = require('karma'); -var config = require('../config'); - -gulp.task('unit', ['views'], function(done) { - new karma.Server({ - configFile: path.join(process.cwd(), config.test.karma) - }, done).start(); -}); diff --git a/package.json b/package.json index 046f7f7..7a923ec 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,9 @@ "repository": "none", "license": "Apache 2.0", "devDependencies": { + "@playwright/test": "^1.41.2", + "@playwright/browser-firefox": "1.41.2", + "@types/node": "^20.11.17", "angular": "1.5.2", "angular-fontawesome": "0.4.0", "angular-mocks": "1.5.2", @@ -52,14 +55,14 @@ "jasmine-ajax": "3.2.0", "jasmine-core": "2.4.1", "jasmine-fixture": "2.0.0", - "karma": "~0.13.22", - "karma-browserify": "5.0.3", - "karma-coverage": "0.5.5", - "karma-firefox-launcher": "2.1.0", - "karma-jasmine": "0.3.8", + "karma": "6.4.2", + "karma-browserify": "8.1.0", + "karma-coverage": "2.2.1", + "karma-firefox-launcher": "2.1.2", + "karma-jasmine": "5.1.0", "karma-subunit-reporter": "0.0.4", "morgan": "1.7.0", - "node-sass": "6.0.0", + "node-sass": "9.0.0", "nprogress": "^0.2.0", "pretty-hrtime": "1.0.2", "protractor": "^2.2.0", @@ -75,7 +78,7 @@ }, "scripts": { "postinstall": "if [ ! -d .venv ]; then tox -epy38 --notest; fi", - "test": "gulp unit", + "test": "npx karma start test/karma.conf.js", "lint": "eslint ./", "prod": "gulp prod; python setup.py sdist", "dev": "gulp dev" diff --git a/test/karma.conf.js b/test/karma.conf.js index 008e435..5ef1121 100644 --- a/test/karma.conf.js +++ b/test/karma.conf.js @@ -1,19 +1,26 @@ -'use strict'; +"use strict"; -var istanbul = require('browserify-istanbul'); -var isparta = require('isparta'); - -module.exports = function(config) { +var istanbul = require("browserify-istanbul"); +var isparta = require("isparta"); +var process = require("process"); +module.exports = function (config) { + process.env.FIREFOX_BIN = require("playwright").firefox.executablePath(); config.set({ - - basePath: '../', - frameworks: ['jasmine', 'browserify'], + basePath: "../", + frameworks: ["jasmine", "browserify"], preprocessors: { - 'app/js/**/*.js': ['browserify', 'coverage'] + "app/js/**/*.js": ["browserify", "coverage"], }, - browsers: ['Firefox'], - reporters: ['progress', 'subunit'], + plugins: [ + require("karma-firefox-launcher"), + require("karma-jasmine"), + require("karma-browserify"), + require("karma-coverage"), + require("karma-subunit-reporter"), + ], + browsers: ["FirefoxHeadless"], + reporters: ["progress", "subunit"], autoWatch: true, singleRun: true, @@ -21,36 +28,34 @@ module.exports = function(config) { browserify: { debug: true, transform: [ - 'bulkify', + "bulkify", istanbul({ instrumenter: isparta, - ignore: ['**/node_modules/**', '**/test/**'] - }) - ] + ignore: ["**/node_modules/**", "**/test/**"], + }), + ], }, subunitReporter: { slug: true, - tags: ['worker-0'] + tags: ["worker-0"], }, proxies: { - '/': 'http://localhost:9876/' + "/": "http://localhost:9876/", }, - urlRoot: '/__karma__/', + urlRoot: "/__karma__/", files: [ // app-specific code - 'app/js/main.js', + "app/js/main.js", // 3rd-party resources - 'node_modules/angular-mocks/angular-mocks.js', + "node_modules/angular-mocks/angular-mocks.js", // test files - 'test/unit/**/*.js' - ] - + "test/unit/**/*.js", + ], }); - };