Skip to content

Commit

Permalink
Merge pull request #34 from ATIX-AG/tfm-test
Browse files Browse the repository at this point in the history
Switch to tfm-test
  • Loading branch information
m-bucher committed May 15, 2024
2 parents 3c76c59 + 3798be6 commit 146f14c
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 60 deletions.
38 changes: 16 additions & 22 deletions .github/workflows/javascript_tests.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,23 @@
---
name: React and Javascript tests
on:
pull_request:
name: JavaScript Testing
on: # yamllint disable-line rule:truthy
push:
branches:
- master
pull_request:
paths:
- 'webpack/**'
- 'package.json'
- '.github/workflows/javascript_tests.yml'

concurrency:
group: ${{ github.ref_name }}-${{ github.workflow }}
cancel-in-progress: true

jobs:
test_js:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [14]
steps:
- uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- run: npm install
- name: Linting
run: |
npm run lint
npm run stylelint
- name: Testing
run: npm run test
test:
name: JavaScript
uses: theforeman/actions/.github/workflows/foreman_plugin_js.yml@v0
with:
plugin: foreman_acd
...
67 changes: 30 additions & 37 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,30 @@
module.exports = {
verbose: true,
testMatch: ['**/*.test.js'],
testPathIgnorePatterns: [
'.local',
'.bundle',
'/node_modules/',
'<rootDir>/foreman/',
],
moduleDirectories: ['node_modules', 'webpack'],
testURL: 'http://localhost/',
collectCoverage: true,
collectCoverageFrom: [
'webpack/**/*.js',
'!webpack/js-yaml.js',
'!webpack/index.js',
'!webpack/test_setup.js',
'!webpack/**/bundle*',
'!webpack/stories/**',
'!webpack/**/*stories.js',
],
coverageReporters: ['text', 'lcov'],
moduleNameMapper: {
'^.+\\.(png|gif|css|scss)$': 'identity-obj-proxy',
},
globals: {
__testing__: true,
},
transform: {
'^.+\\.js$': 'babel-jest',
},
setupFiles: [
'raf/polyfill',
'jest-prop-type-error',
'./webpack/test_setup.js',
],
};
const tfmConfig = require('@theforeman/test/src/pluginConfig');
const {
foremanRelativePath,
foremanLocation,
} = require('@theforeman/find-foreman');

const foremanReactRelative = 'webpack/assets/javascripts/react_app';
const foremanFull = foremanLocation();
const foremanReactFull = foremanRelativePath(foremanReactRelative);

// Find correct path to foremanReact so we do not have to mock it in tests
tfmConfig.moduleNameMapper['^foremanReact(.*)$'] = `${foremanReactFull}/$1`;

tfmConfig.setupFiles = ['./webpack/test_setup.js'];
tfmConfig.setupFilesAfterEnv = [
'./webpack/global_test_setup.js',
'@testing-library/jest-dom',
];

// Do not use default resolver
tfmConfig.resolver = null;
// Specify module dirs instead
tfmConfig.moduleDirectories = [
`${foremanFull}/node_modules`,
`${foremanFull}/node_modules/@theforeman/vendor-core/node_modules`,
'node_modules',
'webpack/test-utils',
];

module.exports = tfmConfig;
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"devDependencies": {
"@theforeman/builder": ">= 12.0.1",
"@theforeman/eslint-plugin-foreman": ">= 12.0.1",
"@theforeman/find-foreman": "^13.0.0",
"@theforeman/test": ">= 12.0.1",
"@theforeman/vendor-dev": ">= 12.0.1",
"babel-plugin-transform-class-properties": "^6.24.1",
Expand All @@ -31,7 +32,7 @@
"lint-fix": "eslint --fix *.js webpack",
"stylelint": "stylelint webpack/**/*.scss",
"stylelint-fix": "stylelint webpack/**/*.scss --fix",
"test": "jest --no-cache webpack"
"test": "tfm-test --plugin --config jest.config.js"
},
"repository": {
"type": "git",
Expand Down
11 changes: 11 additions & 0 deletions webpack/global_test_setup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// runs before each test to make sure console.error output will
// fail a test (i.e. default PropType missing). Check the error
// output and traceback for actual error.
global.console.error = (error, stack) => {
/* eslint-disable-next-line no-console */
if (stack) console.log(stack); // Prints out original stack trace
throw new Error(error);
};

// Increase jest timeout as some tests using multiple http mocks can time out on CI systems.
jest.setTimeout(10000);

0 comments on commit 146f14c

Please sign in to comment.