From aa46e8e06bf89ecbd6d922a861d1c933eee6e7ba Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Fri, 21 Jun 2024 15:13:43 -0700 Subject: [PATCH] [Tests] pre-build the tests, only in CI --- .babelrc | 26 ++- .github/workflows/test.yml | 6 +- .gitignore | 1 + __tests__/src/AXObjectElementMap-test.js | 2 +- __tests__/src/AXObjectRoleMap-test.js | 2 +- __tests__/src/AXObjectsMap-test.js | 2 +- __tests__/src/elementAXObjectMap-test.js | 2 +- __tests__/src/util/iterationDecorator-test.js | 2 +- __tests__/src/util/iteratorProxy-test.js | 2 +- package-lock.json | 213 +++++++++++++++++- package.json | 3 + 11 files changed, 248 insertions(+), 13 deletions(-) diff --git a/.babelrc b/.babelrc index 2ae8bf8..7d5e32d 100644 --- a/.babelrc +++ b/.babelrc @@ -4,6 +4,28 @@ "@babel/preset-flow" ], "plugins": [ - "@babel/plugin-transform-flow-strip-types" - ] + "@babel/plugin-transform-flow-strip-types", + ], + "env": { + "test": { + "plugins": [ + ["module-resolver", { + "root": ["./__tests__"], + "alias": { + "^axobject-query/src/(.*)": "./lib/\\1", + } + }] + ] + }, + "development": { + "plugins": [ + ["module-resolver", { + "root": ["./src"], + "alias": { + "^axobject-query/src/(.*)": "./src/\\1", + } + }] + ] + }, + } } diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 54f8310..87e5e68 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,11 @@ jobs: with: range: '>= 0.4' type: majors - command: npm run tests-only + build-command: npm run build:tests + build-output-dir: | + __tests-built__ + lib + command: npm run tests-built flow: name: Flow type checking diff --git a/.gitignore b/.gitignore index 9626a61..4a24fd3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ reports/ docs/ .nyc_output/ coverage/ +__tests-built__/ diff --git a/__tests__/src/AXObjectElementMap-test.js b/__tests__/src/AXObjectElementMap-test.js index 9db547c..ed2f6cc 100644 --- a/__tests__/src/AXObjectElementMap-test.js +++ b/__tests__/src/AXObjectElementMap-test.js @@ -2,7 +2,7 @@ import test from 'tape'; import deepEqual from 'deep-equal-json'; import inspect from 'object-inspect'; -import AXObjectElementMap from '../../src/AXObjectElementMap'; +import AXObjectElementMap from 'axobject-query/src/AXObjectElementMap'; const entriesList = [ ["AbbrRole", [{"name": "abbr"}]], diff --git a/__tests__/src/AXObjectRoleMap-test.js b/__tests__/src/AXObjectRoleMap-test.js index 381e399..827a514 100644 --- a/__tests__/src/AXObjectRoleMap-test.js +++ b/__tests__/src/AXObjectRoleMap-test.js @@ -2,7 +2,7 @@ import test from 'tape'; import deepEqual from 'deep-equal-json'; import inspect from 'object-inspect'; -import AXObjectRoleMap from '../../src/AXObjectRoleMap'; +import AXObjectRoleMap from 'axobject-query/src/AXObjectRoleMap'; const entriesList = [ ["AlertDialogRole", [{"name": "alertdialog"}]], diff --git a/__tests__/src/AXObjectsMap-test.js b/__tests__/src/AXObjectsMap-test.js index 36d134b..d619057 100644 --- a/__tests__/src/AXObjectsMap-test.js +++ b/__tests__/src/AXObjectsMap-test.js @@ -2,7 +2,7 @@ import test from 'tape'; import deepEqual from 'deep-equal-json'; import inspect from 'object-inspect'; -import AXObjectsMap from '../../src/AXObjectsMap'; +import AXObjectsMap from 'axobject-query/src/AXObjectsMap'; const entriesList = [ ["AbbrRole", {relatedConcepts: [{module: 'HTML',concept: {name: 'abbr',},},],type: 'structure'}], diff --git a/__tests__/src/elementAXObjectMap-test.js b/__tests__/src/elementAXObjectMap-test.js index b170747..b34cbaa 100644 --- a/__tests__/src/elementAXObjectMap-test.js +++ b/__tests__/src/elementAXObjectMap-test.js @@ -2,7 +2,7 @@ import test from 'tape'; import deepEqual from 'deep-equal-json'; import inspect from 'object-inspect'; -import elementAXObjectMap from '../../src/elementAXObjectMap'; +import elementAXObjectMap from 'axobject-query/src/elementAXObjectMap'; const entriesList = [ [{"name": "abbr"}, ["AbbrRole"]], diff --git a/__tests__/src/util/iterationDecorator-test.js b/__tests__/src/util/iterationDecorator-test.js index 3ee13ab..6476e2e 100644 --- a/__tests__/src/util/iterationDecorator-test.js +++ b/__tests__/src/util/iterationDecorator-test.js @@ -2,7 +2,7 @@ import test from 'tape'; import values from 'object.values'; import mockProperty from 'mock-property'; -import iterationDecorator from '../../../src/util/iterationDecorator'; +import iterationDecorator from 'axobject-query/src/util/iterationDecorator'; test('iterationDecorator', (t) => { t.test('adds a Symbol.iterator property to a collection', async (st) => { diff --git a/__tests__/src/util/iteratorProxy-test.js b/__tests__/src/util/iteratorProxy-test.js index d004f9e..c80dd60 100644 --- a/__tests__/src/util/iteratorProxy-test.js +++ b/__tests__/src/util/iteratorProxy-test.js @@ -1,6 +1,6 @@ import test from 'tape'; -import iteratorProxy from '../../../src/util/iteratorProxy'; +import iteratorProxy from 'axobject-query/src/util/iteratorProxy'; test('iteratorProxy', async (t) => { const arr = ['a', 'b', 'c']; diff --git a/package-lock.json b/package-lock.json index c298e83..250e40b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@babel/preset-env": "^7.19.4", "@babel/preset-flow": "^7.18.6", "@babel/register": "^7.24.6", + "babel-plugin-module-resolver": "^5.0.2", "encoding": "^0.1.13", "eslint": "^8.26.0", "eslint-config-airbnb-base": "^15.0.0", @@ -2617,6 +2618,65 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/babel-plugin-module-resolver": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz", + "integrity": "sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-babel-config": "^2.1.1", + "glob": "^9.3.3", + "pkg-up": "^3.1.0", + "reselect": "^4.1.7", + "resolve": "^1.22.8" + } + }, + "node_modules/babel-plugin-module-resolver/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/babel-plugin-module-resolver/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/babel-plugin-module-resolver/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", @@ -4089,6 +4149,17 @@ "node": ">=8" } }, + "node_modules/find-babel-config": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-2.1.1.tgz", + "integrity": "sha512-5Ji+EAysHGe1OipH7GN4qDjok5Z1uw5KAwDCbicU/4wyTZY7CqOCzcWbG7J5ad9mazq67k89fXlbc1MuIfl9uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.3", + "path-exists": "^4.0.0" + } + }, "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -5809,6 +5880,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -8060,6 +8141,43 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", @@ -8098,6 +8216,85 @@ "node": ">= 6" } }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -8369,13 +8566,21 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==", + "dev": true, + "license": "MIT" + }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, diff --git a/package.json b/package.json index 7f2db3e..cffd712 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,8 @@ "prepublishOnly": "npm run build", "pretest": "npm run lint:fix && npm run flow", "test": "npm run tests-only", + "build:tests": "npm run build && rimraf __tests-built__ && babel __tests__ --out-dir __tests-built__", + "tests-built": "nyc tape '__tests-built__/**/*.js'", "tests-only": "nyc tape -r @babel/register '__tests__/**/*.js'" }, "repository": { @@ -37,6 +39,7 @@ "@babel/preset-env": "^7.19.4", "@babel/preset-flow": "^7.18.6", "@babel/register": "^7.24.6", + "babel-plugin-module-resolver": "^5.0.2", "encoding": "^0.1.13", "eslint": "^8.26.0", "eslint-config-airbnb-base": "^15.0.0",