mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2025-12-23 22:18:36 -05:00
Jest config updates; fixes for slower tests (#1401)
* Speed up ObsEdit test with jest-test-time * Update jest config and standardize accessibility tests * Add test:memory to package json
This commit is contained in:
committed by
GitHub
parent
4117a8294f
commit
0833d2ddf0
29
jest.config.ts
Normal file
29
jest.config.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import type {Config} from 'jest';
|
||||
|
||||
const config: Config = {
|
||||
moduleNameMapper: {
|
||||
"\\.svg": "<rootDir>/tests/mocks/svgMock.js"
|
||||
},
|
||||
preset: "react-native",
|
||||
setupFiles: [
|
||||
"./node_modules/react-native-gesture-handler/jestSetup.js",
|
||||
"<rootDir>/tests/jest.setup.js"
|
||||
],
|
||||
globalSetup: "<rootDir>/tests/jest.globalSetup.js",
|
||||
setupFilesAfterEnv: [
|
||||
"react-native-accessibility-engine",
|
||||
"<rootDir>/tests/jest.post-setup.js",
|
||||
"<rootDir>/tests/realm.setup.js",
|
||||
"<rootDir>/tests/initI18next.setup.js"
|
||||
],
|
||||
transformIgnorePatterns: [
|
||||
"node_modules/(?!(jest-)?@react-native|react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base||(?!react-native-redash))|jest-runner"
|
||||
],
|
||||
verbose: true,
|
||||
// uncomment reporters below to see which tests are running the slowest in jest
|
||||
// reporters: [
|
||||
// ["jest-slow-test-reporter", {"numTests": 8, "warnOnSlowerThan": 300, "color": true}]
|
||||
// ],
|
||||
};
|
||||
|
||||
export default config;
|
||||
264
package-lock.json
generated
264
package-lock.json
generated
@@ -147,6 +147,7 @@
|
||||
"husky": "^9.0.11",
|
||||
"jest": "^29.7.0",
|
||||
"jest-fetch-mock": "github:jefflau/jest-fetch-mock",
|
||||
"jest-slow-test-reporter": "^1.0.0",
|
||||
"nock": "^13.5.4",
|
||||
"node-downloader-helper": "^2.1.9",
|
||||
"patch-package": "^8.0.0",
|
||||
@@ -155,6 +156,7 @@
|
||||
"react-native-config-node": "^0.0.3",
|
||||
"react-test-renderer": "18.2.0",
|
||||
"tailwindcss": "^3.3.2",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "5.0.4",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
@@ -2606,6 +2608,28 @@
|
||||
"react-native": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@cspotcode/source-map-support": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
|
||||
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/trace-mapping": "0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
|
||||
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/resolve-uri": "^3.0.3",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@egjs/hammerjs": {
|
||||
"version": "2.0.17",
|
||||
"resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
|
||||
@@ -6590,6 +6614,30 @@
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@tsconfig/node10": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
|
||||
"integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/@tsconfig/node12": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
|
||||
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/@tsconfig/node14": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
|
||||
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/@tsconfig/node16": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
|
||||
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/@types/babel__core": {
|
||||
"version": "7.20.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
|
||||
@@ -7062,6 +7110,15 @@
|
||||
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-walk": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
|
||||
"integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
|
||||
"devOptional": true,
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
@@ -8764,6 +8821,12 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/create-require": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
|
||||
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/cross-fetch": {
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
|
||||
@@ -9928,6 +9991,15 @@
|
||||
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
|
||||
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
|
||||
},
|
||||
"node_modules/diff": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
||||
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
|
||||
"devOptional": true,
|
||||
"engines": {
|
||||
"node": ">=0.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/diff-sequences": {
|
||||
"version": "29.6.3",
|
||||
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
|
||||
@@ -14770,6 +14842,12 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-slow-test-reporter": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-slow-test-reporter/-/jest-slow-test-reporter-1.0.0.tgz",
|
||||
"integrity": "sha512-5FG8hlaO7Wdgdo6oQxGiFAKwd1HW51+8/KmQJgUV3bsW3cCXx9TukaoGnHhBl+hwLkCYENynWL1PQnG8DwOV6w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/jest-snapshot": {
|
||||
"version": "29.7.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
|
||||
@@ -16064,6 +16142,12 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/make-error": {
|
||||
"version": "1.3.6",
|
||||
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
||||
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/makeerror": {
|
||||
"version": "1.0.12",
|
||||
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
|
||||
@@ -21060,6 +21144,55 @@
|
||||
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
|
||||
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
|
||||
},
|
||||
"node_modules/ts-node": {
|
||||
"version": "10.9.2",
|
||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
|
||||
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"@cspotcode/source-map-support": "^0.8.0",
|
||||
"@tsconfig/node10": "^1.0.7",
|
||||
"@tsconfig/node12": "^1.0.7",
|
||||
"@tsconfig/node14": "^1.0.0",
|
||||
"@tsconfig/node16": "^1.0.2",
|
||||
"acorn": "^8.4.1",
|
||||
"acorn-walk": "^8.1.1",
|
||||
"arg": "^4.1.0",
|
||||
"create-require": "^1.1.0",
|
||||
"diff": "^4.0.1",
|
||||
"make-error": "^1.1.1",
|
||||
"v8-compile-cache-lib": "^3.0.1",
|
||||
"yn": "3.1.1"
|
||||
},
|
||||
"bin": {
|
||||
"ts-node": "dist/bin.js",
|
||||
"ts-node-cwd": "dist/bin-cwd.js",
|
||||
"ts-node-esm": "dist/bin-esm.js",
|
||||
"ts-node-script": "dist/bin-script.js",
|
||||
"ts-node-transpile-only": "dist/bin-transpile.js",
|
||||
"ts-script": "dist/bin-script-deprecated.js"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@swc/core": ">=1.2.50",
|
||||
"@swc/wasm": ">=1.2.50",
|
||||
"@types/node": "*",
|
||||
"typescript": ">=2.7"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@swc/core": {
|
||||
"optional": true
|
||||
},
|
||||
"@swc/wasm": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/ts-node/node_modules/arg": {
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
|
||||
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/ts-object-utils": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz",
|
||||
@@ -21441,6 +21574,12 @@
|
||||
"uuid": "bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/v8-compile-cache-lib": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
|
||||
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/v8-to-istanbul": {
|
||||
"version": "9.2.0",
|
||||
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz",
|
||||
@@ -21892,6 +22031,15 @@
|
||||
"fd-slicer": "~1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/yn": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
|
||||
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
|
||||
"devOptional": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/yocto-queue": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||
@@ -23617,6 +23765,27 @@
|
||||
"integrity": "sha512-CmQuJhgM3+R8ZNlEB8tFt+0r3Ei0OnX5aLnT6rLCDM1KobHAfbIXF1W0WlanlGudfitsdLx+qrX9oolOf+9enA==",
|
||||
"requires": {}
|
||||
},
|
||||
"@cspotcode/source-map-support": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
|
||||
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
|
||||
"devOptional": true,
|
||||
"requires": {
|
||||
"@jridgewell/trace-mapping": "0.3.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jridgewell/trace-mapping": {
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
|
||||
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
|
||||
"devOptional": true,
|
||||
"requires": {
|
||||
"@jridgewell/resolve-uri": "^3.0.3",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@egjs/hammerjs": {
|
||||
"version": "2.0.17",
|
||||
"resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz",
|
||||
@@ -26472,6 +26641,30 @@
|
||||
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
|
||||
"integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
|
||||
},
|
||||
"@tsconfig/node10": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
|
||||
"integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
|
||||
"devOptional": true
|
||||
},
|
||||
"@tsconfig/node12": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
|
||||
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
|
||||
"devOptional": true
|
||||
},
|
||||
"@tsconfig/node14": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
|
||||
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
|
||||
"devOptional": true
|
||||
},
|
||||
"@tsconfig/node16": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
|
||||
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
|
||||
"devOptional": true
|
||||
},
|
||||
"@types/babel__core": {
|
||||
"version": "7.20.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
|
||||
@@ -26825,6 +27018,12 @@
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"acorn-walk": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
|
||||
"integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
|
||||
"devOptional": true
|
||||
},
|
||||
"ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
@@ -28115,6 +28314,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"create-require": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
|
||||
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
|
||||
"devOptional": true
|
||||
},
|
||||
"cross-fetch": {
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
|
||||
@@ -28946,6 +29151,12 @@
|
||||
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
|
||||
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
|
||||
},
|
||||
"diff": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
|
||||
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
|
||||
"devOptional": true
|
||||
},
|
||||
"diff-sequences": {
|
||||
"version": "29.6.3",
|
||||
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
|
||||
@@ -32544,6 +32755,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"jest-slow-test-reporter": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-slow-test-reporter/-/jest-slow-test-reporter-1.0.0.tgz",
|
||||
"integrity": "sha512-5FG8hlaO7Wdgdo6oQxGiFAKwd1HW51+8/KmQJgUV3bsW3cCXx9TukaoGnHhBl+hwLkCYENynWL1PQnG8DwOV6w==",
|
||||
"dev": true
|
||||
},
|
||||
"jest-snapshot": {
|
||||
"version": "29.7.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
|
||||
@@ -33475,6 +33692,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"make-error": {
|
||||
"version": "1.3.6",
|
||||
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
|
||||
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
|
||||
"devOptional": true
|
||||
},
|
||||
"makeerror": {
|
||||
"version": "1.0.12",
|
||||
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
|
||||
@@ -37167,6 +37390,35 @@
|
||||
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
|
||||
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
|
||||
},
|
||||
"ts-node": {
|
||||
"version": "10.9.2",
|
||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
|
||||
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
|
||||
"devOptional": true,
|
||||
"requires": {
|
||||
"@cspotcode/source-map-support": "^0.8.0",
|
||||
"@tsconfig/node10": "^1.0.7",
|
||||
"@tsconfig/node12": "^1.0.7",
|
||||
"@tsconfig/node14": "^1.0.0",
|
||||
"@tsconfig/node16": "^1.0.2",
|
||||
"acorn": "^8.4.1",
|
||||
"acorn-walk": "^8.1.1",
|
||||
"arg": "^4.1.0",
|
||||
"create-require": "^1.1.0",
|
||||
"diff": "^4.0.1",
|
||||
"make-error": "^1.1.1",
|
||||
"v8-compile-cache-lib": "^3.0.1",
|
||||
"yn": "3.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"arg": {
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
|
||||
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
|
||||
"devOptional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"ts-object-utils": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz",
|
||||
@@ -37442,6 +37694,12 @@
|
||||
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
|
||||
"dev": true
|
||||
},
|
||||
"v8-compile-cache-lib": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
|
||||
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
|
||||
"devOptional": true
|
||||
},
|
||||
"v8-to-istanbul": {
|
||||
"version": "9.2.0",
|
||||
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz",
|
||||
@@ -37775,6 +38033,12 @@
|
||||
"fd-slicer": "~1.1.0"
|
||||
}
|
||||
},
|
||||
"yn": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
|
||||
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
|
||||
"devOptional": true
|
||||
},
|
||||
"yocto-queue": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||
|
||||
24
package.json
24
package.json
@@ -11,6 +11,7 @@
|
||||
"clean": "./scripts/clean.sh",
|
||||
"clean-start": "npx react-native clean-project-auto && npx pod-install && npm start -- --reset-cache",
|
||||
"test": "jest",
|
||||
"test:memory": "jest --runInBand --logHeapUsage",
|
||||
"lint": "npm run lint:eslint && npm run lint:flow",
|
||||
"lint:eslint": "eslint . --fix",
|
||||
"lint:flow": "flow check",
|
||||
@@ -173,6 +174,7 @@
|
||||
"husky": "^9.0.11",
|
||||
"jest": "^29.7.0",
|
||||
"jest-fetch-mock": "github:jefflau/jest-fetch-mock",
|
||||
"jest-slow-test-reporter": "^1.0.0",
|
||||
"nock": "^13.5.4",
|
||||
"node-downloader-helper": "^2.1.9",
|
||||
"patch-package": "^8.0.0",
|
||||
@@ -181,31 +183,11 @@
|
||||
"react-native-config-node": "^0.0.3",
|
||||
"react-test-renderer": "18.2.0",
|
||||
"tailwindcss": "^3.3.2",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "5.0.4",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"jest": {
|
||||
"moduleNameMapper": {
|
||||
"\\.svg": "<rootDir>/tests/mocks/svgMock.js"
|
||||
},
|
||||
"preset": "react-native",
|
||||
"setupFiles": [
|
||||
"./node_modules/react-native-gesture-handler/jestSetup.js",
|
||||
"<rootDir>/tests/jest.setup.js"
|
||||
],
|
||||
"globalSetup": "<rootDir>/tests/jest.globalSetup.js",
|
||||
"setupFilesAfterEnv": [
|
||||
"react-native-accessibility-engine",
|
||||
"<rootDir>/tests/jest.post-setup.js",
|
||||
"<rootDir>/tests/realm.setup.js",
|
||||
"<rootDir>/tests/initI18next.setup.js"
|
||||
],
|
||||
"transformIgnorePatterns": [
|
||||
"node_modules/(?!(jest-)?@react-native|react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base||(?!react-native-redash))|jest-runner"
|
||||
],
|
||||
"verbose": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ const EvidenceList = ( {
|
||||
<Pressable
|
||||
onLongPress={drag}
|
||||
accessibilityRole="button"
|
||||
accessibilityLabel={t( "Select-or-drag-media" )}
|
||||
onPress={( ) => {
|
||||
setSelectedMediaUri( uri );
|
||||
}}
|
||||
@@ -78,7 +79,7 @@ const EvidenceList = ( {
|
||||
</Pressable>
|
||||
</ScaleDecorator>
|
||||
);
|
||||
}, [setSelectedMediaUri] );
|
||||
}, [setSelectedMediaUri, t] );
|
||||
|
||||
const renderFooter = useCallback( ( ) => (
|
||||
<View className="flex-1 flex-row">
|
||||
|
||||
@@ -823,6 +823,7 @@ See-species-observed-by-this-user-in-Explore = See species observed by this user
|
||||
Select-a-date-and-time-for-observation = Select a date and time for observation
|
||||
Select-captive-or-cultivated-status = Select captive or cultivated status
|
||||
Select-geoprivacy-status = Select geoprivacy status
|
||||
Select-or-drag-media = Select or drag media
|
||||
Select-photo = Select photo
|
||||
Select-the-identification-you-want-to-add = Select the identification you want to add to this observation. You can add a filter to further refine your results or search for a taxon.
|
||||
# Label for an element that let's you select a user
|
||||
|
||||
@@ -1127,6 +1127,7 @@
|
||||
"Select-a-date-and-time-for-observation": "Select a date and time for observation",
|
||||
"Select-captive-or-cultivated-status": "Select captive or cultivated status",
|
||||
"Select-geoprivacy-status": "Select geoprivacy status",
|
||||
"Select-or-drag-media": "Select or drag media",
|
||||
"Select-photo": "Select photo",
|
||||
"Select-the-identification-you-want-to-add": "Select the identification you want to add to this observation. You can add a filter to further refine your results or search for a taxon.",
|
||||
"Select-user": {
|
||||
|
||||
@@ -823,6 +823,7 @@ See-species-observed-by-this-user-in-Explore = See species observed by this user
|
||||
Select-a-date-and-time-for-observation = Select a date and time for observation
|
||||
Select-captive-or-cultivated-status = Select captive or cultivated status
|
||||
Select-geoprivacy-status = Select geoprivacy status
|
||||
Select-or-drag-media = Select or drag media
|
||||
Select-photo = Select photo
|
||||
Select-the-identification-you-want-to-add = Select the identification you want to add to this observation. You can add a filter to further refine your results or search for a taxon.
|
||||
# Label for an element that let's you select a user
|
||||
|
||||
@@ -64,11 +64,7 @@ describe( "CameraContainer", ( ) => {
|
||||
} );
|
||||
|
||||
it( "should not have accessibility errors", () => {
|
||||
const Camera = (
|
||||
<INatPaperProvider>
|
||||
<CameraContainer />
|
||||
</INatPaperProvider>
|
||||
);
|
||||
const Camera = <CameraContainer />;
|
||||
|
||||
expect( Camera ).toBeAccessible();
|
||||
} );
|
||||
|
||||
@@ -7,8 +7,7 @@ import { renderComponent } from "tests/helpers/render";
|
||||
describe( "MediaViewer", ( ) => {
|
||||
describe( "without media", ( ) => {
|
||||
it( "should not have accessibility errors", async () => {
|
||||
renderComponent( <MediaViewer /> );
|
||||
const mediaViewer = await screen.findByTestId( "MediaViewer" );
|
||||
const mediaViewer = <MediaViewer />;
|
||||
expect( mediaViewer ).toBeAccessible( );
|
||||
} );
|
||||
|
||||
@@ -24,8 +23,7 @@ describe( "MediaViewer", ( ) => {
|
||||
const photos = [factory( "LocalPhoto" )];
|
||||
|
||||
it( "should not have accessibility errors", async () => {
|
||||
renderComponent( <MediaViewer photos={photos} /> );
|
||||
const mediaViewer = await screen.findByTestId( "MediaViewer" );
|
||||
const mediaViewer = <MediaViewer photos={photos} />;
|
||||
expect( mediaViewer ).toBeAccessible( );
|
||||
} );
|
||||
|
||||
|
||||
@@ -54,11 +54,7 @@ jest.mock( "@tanstack/react-query", ( ) => ( {
|
||||
|
||||
describe( "Messages", ( ) => {
|
||||
it( "should not have accessibility errors", () => {
|
||||
const messages = (
|
||||
<INatPaperProvider>
|
||||
<Messages />
|
||||
</INatPaperProvider>
|
||||
);
|
||||
const messages = <Messages />;
|
||||
expect( messages ).toBeAccessible();
|
||||
} );
|
||||
|
||||
|
||||
@@ -3,63 +3,57 @@ import ObsEdit from "components/ObsEdit/ObsEdit";
|
||||
import React from "react";
|
||||
import useStore from "stores/useStore";
|
||||
import factory from "tests/factory";
|
||||
import faker from "tests/helpers/faker";
|
||||
import { renderComponent } from "tests/helpers/render";
|
||||
|
||||
const initialStoreState = useStore.getState( );
|
||||
|
||||
const mockLocationName = "San Francisco, CA";
|
||||
|
||||
const mockCurrentUser = factory( "LocalUser" );
|
||||
|
||||
const mockObservations = [
|
||||
factory( "RemoteObservation", {
|
||||
latitude: 37.99,
|
||||
longitude: -142.88,
|
||||
user: mockCurrentUser,
|
||||
place_guess: mockLocationName
|
||||
jest.mock( "sharedHooks/useCurrentObservationLocation", () => ( {
|
||||
__esModule: true,
|
||||
default: ( ) => ( {
|
||||
hasLocation: true,
|
||||
isFetchingLocation: false,
|
||||
permissionResult: "granted"
|
||||
} )
|
||||
];
|
||||
} ) );
|
||||
|
||||
jest.mock( "components/ObsEdit/BottomButtons" );
|
||||
jest.mock( "components/SharedComponents/IconicTaxonChooser" );
|
||||
jest.mock( "components/ObsEdit/Sheets/AddEvidenceSheet" );
|
||||
|
||||
const mockMutate = jest.fn();
|
||||
jest.mock( "sharedHooks/useAuthenticatedMutation", () => ( {
|
||||
__esModule: true,
|
||||
default: () => ( {
|
||||
mutate: mockMutate
|
||||
} )
|
||||
} ) );
|
||||
|
||||
const observationPhotos = [
|
||||
factory( "RemoteObservationPhoto", {
|
||||
photo: {
|
||||
url: faker.image.url( )
|
||||
},
|
||||
position: 0
|
||||
} ),
|
||||
factory( "RemoteObservationPhoto", {
|
||||
photo: {
|
||||
url: `${faker.image.url( )}/100`
|
||||
},
|
||||
position: 1
|
||||
} )
|
||||
];
|
||||
|
||||
const mockObservation = factory( "RemoteObservation", {
|
||||
speciesGuess: "Obsedit test",
|
||||
observationPhotos
|
||||
const mockObservation = factory( "LocalObservation", {
|
||||
observationPhotos,
|
||||
time_observed_at: null
|
||||
} );
|
||||
|
||||
const renderObsEdit = ( ) => renderComponent( <ObsEdit /> );
|
||||
beforeAll( async ( ) => {
|
||||
useStore.setState( initialStoreState, true );
|
||||
useStore.setState( {
|
||||
currentObservation: mockObservation,
|
||||
observations: [mockObservation]
|
||||
} );
|
||||
} );
|
||||
|
||||
describe( "ObsEdit", () => {
|
||||
beforeAll( async ( ) => {
|
||||
useStore.setState( initialStoreState, true );
|
||||
} );
|
||||
|
||||
it( "should not have accessibility errors", async () => {
|
||||
renderObsEdit( mockObservations );
|
||||
|
||||
const obsEdit = await screen.findByTestId( "obs-edit" );
|
||||
it( "should not have accessibility errors", async ( ) => {
|
||||
const obsEdit = <ObsEdit />;
|
||||
expect( obsEdit ).toBeAccessible();
|
||||
} );
|
||||
|
||||
it( "displays the number of photos in global state obsPhotos", async ( ) => {
|
||||
useStore.setState( {
|
||||
currentObservation: mockObservation,
|
||||
observations: [mockObservation]
|
||||
} );
|
||||
renderComponent( <ObsEdit /> );
|
||||
|
||||
const evidenceList = screen.getByTestId( "EvidenceList.DraggableFlatList" );
|
||||
|
||||
@@ -20,6 +20,14 @@ jest.mock( "sharedHooks/useAuthenticatedQuery", ( ) => ( {
|
||||
} )
|
||||
} ) );
|
||||
|
||||
const mockMutate = jest.fn();
|
||||
jest.mock( "sharedHooks/useAuthenticatedMutation", () => ( {
|
||||
__esModule: true,
|
||||
default: ( ) => ( {
|
||||
mutate: mockMutate
|
||||
} )
|
||||
} ) );
|
||||
|
||||
jest.mock( "@react-navigation/native", ( ) => {
|
||||
const actualNav = jest.requireActual( "@react-navigation/native" );
|
||||
return {
|
||||
@@ -28,14 +36,18 @@ jest.mock( "@react-navigation/native", ( ) => {
|
||||
params: {
|
||||
id: mockProject.id
|
||||
}
|
||||
} )
|
||||
} ),
|
||||
useNavigation: jest.fn( )
|
||||
};
|
||||
} );
|
||||
|
||||
beforeAll( async () => {
|
||||
jest.useFakeTimers( );
|
||||
} );
|
||||
|
||||
describe( "ProjectDetails", ( ) => {
|
||||
test( "should not have accessibility errors", async ( ) => {
|
||||
renderComponent( <ProjectDetailsContainer /> );
|
||||
const projectDetails = await screen.findByTestId( "project-details" );
|
||||
const projectDetails = <ProjectDetailsContainer />;
|
||||
expect( projectDetails ).toBeAccessible();
|
||||
} );
|
||||
|
||||
|
||||
@@ -16,6 +16,13 @@ const initialStoreState = useStore.getState( );
|
||||
|
||||
const mockTaxon = factory( "RemoteTaxon" );
|
||||
|
||||
jest.mock( "sharedHooks/useAuthenticatedQuery", () => ( {
|
||||
__esModule: true,
|
||||
default: () => ( {
|
||||
data: []
|
||||
} )
|
||||
} ) );
|
||||
|
||||
jest.mock( "sharedHooks/useTaxon", () => ( {
|
||||
__esModule: true,
|
||||
default: () => ( { taxon: mockTaxon } )
|
||||
@@ -31,11 +38,11 @@ describe( "Suggestions", ( ) => {
|
||||
} );
|
||||
|
||||
test( "should not have accessibility errors", async ( ) => {
|
||||
renderComponent( <Suggestions
|
||||
suggestions={mockSuggestionsList}
|
||||
/> );
|
||||
|
||||
const suggestions = await screen.findByTestId( "suggestions" );
|
||||
const suggestions = (
|
||||
<Suggestions
|
||||
suggestions={mockSuggestionsList}
|
||||
/>
|
||||
);
|
||||
expect( suggestions ).toBeAccessible( );
|
||||
} );
|
||||
|
||||
|
||||
@@ -39,7 +39,8 @@ jest.mock( "@react-navigation/native", ( ) => {
|
||||
params: {
|
||||
id: mockTaxon.id
|
||||
}
|
||||
} )
|
||||
} ),
|
||||
useNavigation: jest.fn( )
|
||||
};
|
||||
} );
|
||||
|
||||
@@ -82,13 +83,7 @@ describe( "TaxonDetails", ( ) => {
|
||||
} );
|
||||
|
||||
test( "should not have accessibility errors", ( ) => {
|
||||
const taxonDetails = (
|
||||
<INatPaperProvider>
|
||||
<NavigationContainer>
|
||||
<TaxonDetails />
|
||||
</NavigationContainer>
|
||||
</INatPaperProvider>
|
||||
);
|
||||
const taxonDetails = <TaxonDetails />;
|
||||
expect( taxonDetails ).toBeAccessible( );
|
||||
} );
|
||||
|
||||
|
||||
@@ -3,6 +3,21 @@ import Taxonomy from "components/TaxonDetails/Taxonomy";
|
||||
import React from "react";
|
||||
import factory from "tests/factory";
|
||||
|
||||
const mockUser = factory( "LocalUser" );
|
||||
|
||||
jest.mock( "sharedHooks/useCurrentUser", ( ) => ( {
|
||||
__esModule: true,
|
||||
default: ( ) => mockUser
|
||||
} ) );
|
||||
|
||||
jest.mock( "@react-navigation/native", ( ) => {
|
||||
const actualNav = jest.requireActual( "@react-navigation/native" );
|
||||
return {
|
||||
...actualNav,
|
||||
useNavigation: jest.fn( )
|
||||
};
|
||||
} );
|
||||
|
||||
const capitalizeFirstLetter = s => s.charAt( 0 ).toUpperCase( ) + s.slice( 1 );
|
||||
|
||||
const ancestors = [
|
||||
@@ -48,16 +63,6 @@ describe( "Taxonomy", ( ) => {
|
||||
expect( currentTaxonRow ).toHaveTextContent( `${commonName}(${rankAndName})` );
|
||||
} );
|
||||
|
||||
test( "renders current taxon", ( ) => {
|
||||
render( <Taxonomy taxon={currentTaxon} /> );
|
||||
|
||||
const name = screen.getByText( currentTaxon.name );
|
||||
const commonName = screen.getByText( currentTaxon.preferred_common_name );
|
||||
|
||||
expect( commonName ).toBeVisible( );
|
||||
expect( name ).toBeVisible( );
|
||||
} );
|
||||
|
||||
test( "renders all ancestors", ( ) => {
|
||||
render( <Taxonomy taxon={currentTaxon} /> );
|
||||
|
||||
|
||||
@@ -14,6 +14,14 @@ jest.mock( "sharedHooks/useAuthenticatedQuery", () => ( {
|
||||
} )
|
||||
} ) );
|
||||
|
||||
const mockMutate = jest.fn();
|
||||
jest.mock( "sharedHooks/useAuthenticatedMutation", () => ( {
|
||||
__esModule: true,
|
||||
default: ( ) => ( {
|
||||
mutate: mockMutate
|
||||
} )
|
||||
} ) );
|
||||
|
||||
jest.mock( "@react-navigation/native", () => {
|
||||
const actualNav = jest.requireActual( "@react-navigation/native" );
|
||||
return {
|
||||
@@ -46,8 +54,7 @@ describe( "UserProfile", () => {
|
||||
} );
|
||||
|
||||
test( "should not have accessibility errors", async () => {
|
||||
renderComponent( <UserProfile /> );
|
||||
const userProfile = await screen.findByTestId( "UserProfile" );
|
||||
const userProfile = <UserProfile />;
|
||||
expect( userProfile ).toBeAccessible();
|
||||
} );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user