Skip to content
This repository has been archived by the owner on Mar 14, 2022. It is now read-only.

Commit

Permalink
when running the karma tests, compile the code to es5 to work in ie11
Browse files Browse the repository at this point in the history
  • Loading branch information
JakeChampion committed Sep 24, 2020
1 parent cc3935b commit eab17fb
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 45 deletions.
86 changes: 43 additions & 43 deletions config/karma.config.browserstack.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,46 +9,46 @@ const customLaunchers = {
// Testing on minimum version for enhanced experience based on
// https://docs.google.com/document/d/1AG4uZEFiWOkXfy0pdE3-3NCUP2No4MkoiZMLlJnO5lI/edit?ts=5d498574
// Android 5
bs_android5: {
base: 'BrowserStack',
device: 'Google Nexus 6',
os: 'android',
os_version: '5.0',
real_mobile: true
},
// bs_android5: {
// base: 'BrowserStack',
// device: 'Google Nexus 6',
// os: 'android',
// os_version: '5.0',
// real_mobile: true
// },

// iOS 10
bs_iphone7: {
base: 'BrowserStack',
device: 'iPhone 7',
os: 'ios',
os_version: '10.0',
real_mobile: true
},
// // iOS 10
// bs_iphone7: {
// base: 'BrowserStack',
// device: 'iPhone 7',
// os: 'ios',
// os_version: '10.0',
// real_mobile: true
// },

// Firefox latest
bs_firefox: {
base: 'BrowserStack',
browser: 'firefox',
os: 'OS X',
os_version: 'Mojave'
},
// // Firefox latest
// bs_firefox: {
// base: 'BrowserStack',
// browser: 'firefox',
// os: 'OS X',
// os_version: 'Mojave'
// },

// Chrome latest
bs_chrome: {
base: 'BrowserStack',
browser: 'chrome',
os: 'OS X',
os_version: 'Mojave'
},
// // Chrome latest
// bs_chrome: {
// base: 'BrowserStack',
// browser: 'chrome',
// os: 'OS X',
// os_version: 'Mojave'
// },

// Safari latest
bs_safari: {
base: 'BrowserStack',
browser: 'safari',
os: 'OS X',
os_version: 'High Sierra'
},
// // Safari latest
// bs_safari: {
// base: 'BrowserStack',
// browser: 'safari',
// os: 'OS X',
// os_version: 'High Sierra'
// },

// IE 11
bs_ie: {
Expand All @@ -58,13 +58,13 @@ const customLaunchers = {
os_version: '10'
},

// Edge latest
bs_edge: {
base: 'BrowserStack',
browser: 'edge',
os: 'Windows',
os_version: '10'
},
// // Edge latest
// bs_edge: {
// base: 'BrowserStack',
// browser: 'edge',
// os: 'Windows',
// os_version: '10'
// },
};

const browsers = Object.keys(customLaunchers);
Expand Down
7 changes: 5 additions & 2 deletions config/karma.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ const path = require('path');
const fileHelpers = require('../lib/helpers/files');

const karmaScrumple = require('../lib/karma-scrumple');
const karmaSwc = require('../lib/karma-swc');

module.exports.getBaseKarmaConfig = function (opts = { ignoreBower: false }) {
return Promise.all([fileHelpers.getModuleName(), fileHelpers.getModuleBrands(), fileHelpers.readIfExists(path.resolve('main.scss'))]).then(values => {
const moduleName = values[0];
Expand Down Expand Up @@ -54,7 +56,8 @@ module.exports.getBaseKarmaConfig = function (opts = { ignoreBower: false }) {

plugins: [
'karma-*',
karmaScrumple
karmaScrumple,
karmaSwc
],

// web server port
Expand All @@ -63,7 +66,7 @@ module.exports.getBaseKarmaConfig = function (opts = { ignoreBower: false }) {
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'test/**/*.js': ['scrumple', 'sourcemap'],
'test/**/*.js': ['scrumple', 'swc', 'sourcemap'],
'main.scss': ['scss']
},
scssPreprocessor: {
Expand Down
47 changes: 47 additions & 0 deletions lib/karma-swc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"use strict";

const execa = require('execa');
const swcPath = require.resolve('@swc/cli/bin/swc');
const path = require('path');

function createPreprocessor(config, logger) {
const log = logger.create('preprocessor.swc');

return async function preprocess(original, file, done) {
const originalPath = file.originalPath;
const location = path.relative(config.basePath, originalPath);

const swcArguments = ['--filename', '-', '--no-swcrc'];

const swcCommand = swcPath + ' ' + swcArguments.join(' ');
try {
log.info('Generating bundle for ./%s', location);
const {stdout, stderr} = await execa.command(swcCommand, {
cwd: config.basePath,
input: original
});
if (stderr) {
log.error('Failed to process ./%s\n\n%s\n', location, stderr);
done(stderr);
} else if (stdout) {
done(undefined, stdout);
} else {
log.warn('Nothing was processed for ./%s\n', location);
}
done(null, original);
} catch (error) {
log.error('Failed to process ./%s\n\n%s\n', location, error.stack);
done(error, null);
}
};
}

module.exports = {
'preprocessor:swc': [
'factory',
(factory => {
factory.$inject = ['config', 'logger'];
return factory;
})(createPreprocessor),
],
};

0 comments on commit eab17fb

Please sign in to comment.