about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.circleci/config.yml8
-rw-r--r--.github/workflows/test-js.yml41
-rw-r--r--jest.config.js29
3 files changed, 52 insertions, 26 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 0b3123893..183ad9048 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -217,11 +217,3 @@ workflows:
       - test-two-step-migrations:
           requires:
             - build
-      - node/run:
-          cache-version: v1
-          name: test-webui
-          pkg-manager: yarn
-          requires:
-            - build
-          version: '16.19'
-          yarn-run: test:jest
diff --git a/.github/workflows/test-js.yml b/.github/workflows/test-js.yml
new file mode 100644
index 000000000..60b8e318e
--- /dev/null
+++ b/.github/workflows/test-js.yml
@@ -0,0 +1,41 @@
+name: JavaScript Testing
+on:
+  push:
+    branches-ignore:
+      - 'dependabot/**'
+    paths:
+      - 'package.json'
+      - 'yarn.lock'
+      - '.nvmrc'
+      - '**/*.js'
+      - '**/*.snap'
+      - '.github/workflows/test-js.yml'
+
+  pull_request:
+    paths:
+      - 'package.json'
+      - 'yarn.lock'
+      - '.nvmrc'
+      - '**/*.js'
+      - '**/*.snap'
+      - '.github/workflows/test-js.yml'
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Clone repository
+        uses: actions/checkout@v3
+
+      - name: Set up Node.js
+        uses: actions/setup-node@v3
+        with:
+          cache: yarn
+          node-version-file: '.nvmrc'
+
+      - name: Install all yarn packages
+        run: yarn --frozen-lockfile
+
+      - name: Jest testing
+        run: yarn test:jest --reporters github-actions summary
diff --git a/jest.config.js b/jest.config.js
index d7b5610b8..69222ea35 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,9 +1,7 @@
-module.exports = {
-  'testEnvironment': 'jsdom',
-  'projects': [
-    '<rootDir>/app/javascript/mastodon',
-  ],
-  'testPathIgnorePatterns': [
+/** @type {import('jest').Config} */
+const config = {
+  testEnvironment: 'jsdom',
+  testPathIgnorePatterns: [
     '<rootDir>/node_modules/',
     '<rootDir>/vendor/',
     '<rootDir>/config/',
@@ -11,22 +9,17 @@ module.exports = {
     '<rootDir>/public/',
     '<rootDir>/tmp/',
   ],
-  'setupFiles': [
-    'raf/polyfill',
-  ],
-  'setupFilesAfterEnv': [
-    '<rootDir>/app/javascript/mastodon/test_setup.js',
-  ],
-  'collectCoverageFrom': [
+  setupFiles: ['raf/polyfill'],
+  setupFilesAfterEnv: ['<rootDir>/app/javascript/mastodon/test_setup.js'],
+  collectCoverageFrom: [
     'app/javascript/mastodon/**/*.js',
     '!app/javascript/mastodon/features/emoji/emoji_compressed.js',
     '!app/javascript/mastodon/locales/locale-data/*.js',
     '!app/javascript/mastodon/service_worker/entry.js',
     '!app/javascript/mastodon/test_setup.js',
   ],
-  'coverageDirectory': '<rootDir>/coverage',
-  'moduleDirectories': [
-    '<rootDir>/node_modules',
-    '<rootDir>/app/javascript',
-  ],
+  coverageDirectory: '<rootDir>/coverage',
+  moduleDirectories: ['<rootDir>/node_modules', '<rootDir>/app/javascript'],
 };
+
+module.exports = config;