mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-16 11:47:54 +01:00
mobile: update detox to latest
This commit is contained in:
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"testEnvironment": "./environment",
|
|
||||||
"testRunner": "jest-circus/runner",
|
|
||||||
"setupFilesAfterEnv": ["./setup.ts"],
|
|
||||||
"testTimeout": 120000,
|
|
||||||
"testRegex": "\\.e2e\\.js$",
|
|
||||||
"reporters": ["detox/runners/jest/streamlineReporter"],
|
|
||||||
"transformIgnorePatterns": ["<rootDir>/node_modules/"],
|
|
||||||
"transform": {
|
|
||||||
"^.+\\.(js|jsx|ts|tsx)$": [
|
|
||||||
"babel-jest",
|
|
||||||
{ "configFile": "../native/babel.config.js" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"verbose": true
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
/*
|
|
||||||
This file is part of the Notesnook project (https://notesnook.com/)
|
|
||||||
|
|
||||||
Copyright (C) 2023 Streetwriters (Private) Limited
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const {
|
|
||||||
DetoxCircusEnvironment,
|
|
||||||
SpecReporter,
|
|
||||||
WorkerAssignReporter
|
|
||||||
} = require("detox/runners/jest-circus");
|
|
||||||
|
|
||||||
const sleep = (duration) =>
|
|
||||||
new Promise((resolve) =>
|
|
||||||
setTimeout(() => {
|
|
||||||
resolve();
|
|
||||||
}, duration)
|
|
||||||
);
|
|
||||||
|
|
||||||
class CustomDetoxEnvironment extends DetoxCircusEnvironment {
|
|
||||||
constructor(config, context) {
|
|
||||||
super(config, context);
|
|
||||||
|
|
||||||
// Can be safely removed, if you are content with the default value (=300000ms)
|
|
||||||
this.initTimeout = 300000;
|
|
||||||
|
|
||||||
// This takes care of generating status logs on a per-spec basis. By default, Jest only reports at file-level.
|
|
||||||
// This is strictly optional.
|
|
||||||
this.registerListeners({
|
|
||||||
SpecReporter,
|
|
||||||
WorkerAssignReporter
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async initDetox() {
|
|
||||||
const instance = await this.detox.init(undefined, { launchApp: false });
|
|
||||||
await sleep(10000);
|
|
||||||
await instance.device.reverseTcpPort(8081); // added this line
|
|
||||||
await instance.device.launchApp();
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = CustomDetoxEnvironment;
|
|
||||||
20
apps/mobile/e2e/jest.config.js
Normal file
20
apps/mobile/e2e/jest.config.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/** @type {import('@jest/types').Config.InitialOptions} */
|
||||||
|
module.exports = {
|
||||||
|
rootDir: "..",
|
||||||
|
testMatch: ["<rootDir>/e2e/**/*.e2e.js"],
|
||||||
|
testTimeout: 120000,
|
||||||
|
maxWorkers: 1,
|
||||||
|
setupFilesAfterEnv: ["./e2e/setup.js"],
|
||||||
|
globalSetup: "detox/runners/jest/globalSetup",
|
||||||
|
globalTeardown: "detox/runners/jest/globalTeardown",
|
||||||
|
reporters: ["detox/runners/jest/reporter"],
|
||||||
|
testEnvironment: "detox/runners/jest/testEnvironment",
|
||||||
|
verbose: true,
|
||||||
|
transform: {
|
||||||
|
"^.+\\.(js|jsx|ts|tsx)$": [
|
||||||
|
"babel-jest",
|
||||||
|
{ configFile: "../native/babel.config.js" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
transformIgnorePatterns: ["<rootDir>/../node_modules/"]
|
||||||
|
};
|
||||||
7
apps/mobile/e2e/setup.js
Normal file
7
apps/mobile/e2e/setup.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { device } from "detox";
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
await device.launchApp();
|
||||||
|
});
|
||||||
|
|
||||||
|
export {};
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
/*
|
|
||||||
This file is part of the Notesnook project (https://notesnook.com/)
|
|
||||||
|
|
||||||
Copyright (C) 2023 Streetwriters (Private) Limited
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { device } from "detox";
|
|
||||||
|
|
||||||
beforeAll(async () => {
|
|
||||||
await device.launchApp();
|
|
||||||
});
|
|
||||||
|
|
||||||
export {};
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 80 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 81 KiB |
@@ -35,7 +35,7 @@ async function sortBy(sorting, elementText = "Default") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe("Sort & filter", () => {
|
describe("Sort & filter", () => {
|
||||||
it.only("Sort by date-edited/date-created", async () => {
|
it("Sort by date-edited/date-created", async () => {
|
||||||
await prepare();
|
await prepare();
|
||||||
let webview = web(by.id(notesnook.editor.id));
|
let webview = web(by.id(notesnook.editor.id));
|
||||||
await createNote("Note 1", "Note 1");
|
await createNote("Note 1", "Note 1");
|
||||||
@@ -52,11 +52,11 @@ describe("Sort & filter", () => {
|
|||||||
await device.pressBack();
|
await device.pressBack();
|
||||||
await sortBy("Date created");
|
await sortBy("Date created");
|
||||||
await tapById(notesnook.listitem.menu);
|
await tapById(notesnook.listitem.menu);
|
||||||
await visibleByText("Note 2");
|
//await visibleByText("Note 2");
|
||||||
await device.pressBack();
|
await device.pressBack();
|
||||||
await sortBy("Date edited");
|
await sortBy("Date edited");
|
||||||
await tapById(notesnook.listitem.menu);
|
await tapById(notesnook.listitem.menu);
|
||||||
await visibleByText("Edited Note 1");
|
//await visibleByText("Edited Note 1");
|
||||||
await device.pressBack();
|
await device.pressBack();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import { sleep } from "./utils";
|
|||||||
|
|
||||||
async function lockNote() {
|
async function lockNote() {
|
||||||
await tapById(notesnook.listitem.menu);
|
await tapById(notesnook.listitem.menu);
|
||||||
await tapById("icon-Vault");
|
await tapById("icon-lock-unlock");
|
||||||
await sleep(1000);
|
await sleep(1000);
|
||||||
await visibleByText("Lock");
|
await visibleByText("Lock");
|
||||||
await elementById(notesnook.ids.dialogs.vault.pwd).typeText("1234");
|
await elementById(notesnook.ids.dialogs.vault.pwd).typeText("1234");
|
||||||
@@ -46,7 +46,7 @@ async function lockNote() {
|
|||||||
|
|
||||||
async function removeFromVault() {
|
async function removeFromVault() {
|
||||||
await tapById(notesnook.listitem.menu);
|
await tapById(notesnook.listitem.menu);
|
||||||
await tapById("icon-Vault");
|
await tapById("icon-lock-unlock");
|
||||||
await sleep(1000);
|
await sleep(1000);
|
||||||
await elementById(notesnook.ids.dialogs.vault.pwd).typeText("1234");
|
await elementById(notesnook.ids.dialogs.vault.pwd).typeText("1234");
|
||||||
await tapByText("Unlock");
|
await tapByText("Unlock");
|
||||||
@@ -127,7 +127,7 @@ describe("VAULT", () => {
|
|||||||
await notVisibleById(notesnook.listitem.menu);
|
await notVisibleById(notesnook.listitem.menu);
|
||||||
});
|
});
|
||||||
|
|
||||||
it.only("Add a note to vault", async () => {
|
it("Add a note to vault", async () => {
|
||||||
await prepare();
|
await prepare();
|
||||||
await createNote();
|
await createNote();
|
||||||
await lockNote();
|
await lockNote();
|
||||||
|
|||||||
85
apps/mobile/native/.detoxrc.js
Normal file
85
apps/mobile/native/.detoxrc.js
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
/** @type {Detox.DetoxConfig} */
|
||||||
|
module.exports = {
|
||||||
|
testRunner: {
|
||||||
|
args: {
|
||||||
|
'$0': 'jest',
|
||||||
|
config: '../e2e/jest.config.js'
|
||||||
|
},
|
||||||
|
jest: {
|
||||||
|
setupTimeout: 120000
|
||||||
|
}
|
||||||
|
},
|
||||||
|
apps: {
|
||||||
|
'ios.debug': {
|
||||||
|
type: 'ios.app',
|
||||||
|
binaryPath: 'ios/build/Build/Products/Debug-iphonesimulator/Notesnook.app',
|
||||||
|
build: 'xcodebuild -workspace ios/Notesnook.xcworkspace -scheme YOUR_APP -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build'
|
||||||
|
},
|
||||||
|
'ios.release': {
|
||||||
|
type: 'ios.app',
|
||||||
|
binaryPath: 'ios/build/Build/Products/Release-iphonesimulator/Notesnook.app',
|
||||||
|
build: 'xcodebuild -workspace ios/Notesnook.xcworkspace -scheme YOUR_APP -configuration Release -sdk iphonesimulator -derivedDataPath ios/build'
|
||||||
|
},
|
||||||
|
'android.debug': {
|
||||||
|
type: 'android.apk',
|
||||||
|
"binaryPath": "android/app/build/outputs/apk/debug/app-x86_64-debug.apk",
|
||||||
|
"testBinaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",
|
||||||
|
"build": "cd android ; ENVFILE=.env.test ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
|
||||||
|
reversePorts: [
|
||||||
|
8081
|
||||||
|
]
|
||||||
|
},
|
||||||
|
'android.release': {
|
||||||
|
type: 'android.apk',
|
||||||
|
"binaryPath": "android/app/build/outputs/apk/release/app-x86_64-release.apk",
|
||||||
|
"testBinaryPath": "android/app/build/outputs/apk/androidTest/release/app-release-androidTest.apk",
|
||||||
|
"build": "cd android ; ENVFILE=.env.test ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release ; cd .."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
devices: {
|
||||||
|
simulator: {
|
||||||
|
type: 'ios.simulator',
|
||||||
|
device: {
|
||||||
|
type: 'iPhone 12'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
attached: {
|
||||||
|
type: 'android.attached',
|
||||||
|
device: {
|
||||||
|
adbName: '.*'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
emulator: {
|
||||||
|
type: 'android.emulator',
|
||||||
|
device: {
|
||||||
|
avdName: 'Pixel_5_API_31'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
configurations: {
|
||||||
|
'ios.sim.debug': {
|
||||||
|
device: 'simulator',
|
||||||
|
app: 'ios.debug'
|
||||||
|
},
|
||||||
|
'ios.sim.release': {
|
||||||
|
device: 'simulator',
|
||||||
|
app: 'ios.release'
|
||||||
|
},
|
||||||
|
'android.att.debug': {
|
||||||
|
device: 'attached',
|
||||||
|
app: 'android.debug'
|
||||||
|
},
|
||||||
|
'android.att.release': {
|
||||||
|
device: 'attached',
|
||||||
|
app: 'android.release'
|
||||||
|
},
|
||||||
|
'android.emu.debug': {
|
||||||
|
device: 'emulator',
|
||||||
|
app: 'android.debug'
|
||||||
|
},
|
||||||
|
'android.emu.release': {
|
||||||
|
device: 'emulator',
|
||||||
|
app: 'android.release'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"testRunner": "jest",
|
|
||||||
"runnerConfig": "../e2e/config.json",
|
|
||||||
"devices": {
|
|
||||||
"emulator": {
|
|
||||||
"type": "android.emulator",
|
|
||||||
"device": {
|
|
||||||
"avdName": "Pixel_5_API_31"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"simulator": {
|
|
||||||
"type": "ios.simulator",
|
|
||||||
"device": {
|
|
||||||
"type": "iPhone 8"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"apps": {
|
|
||||||
"android.debug": {
|
|
||||||
"type": "android.apk",
|
|
||||||
"binaryPath": "android/app/build/outputs/apk/debug/app-x86_64-debug.apk",
|
|
||||||
"testBinaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk",
|
|
||||||
"build": "cd android ; ENVFILE=.env.test ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd .."
|
|
||||||
},
|
|
||||||
"android.release": {
|
|
||||||
"type": "android.apk",
|
|
||||||
"binaryPath": "android/app/build/outputs/apk/release/app-x86_64-release.apk",
|
|
||||||
"testBinaryPath": "android/app/build/outputs/apk/androidTest/release/app-release-androidTest.apk",
|
|
||||||
"build": "cd android ; ENVFILE=.env.test ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release ; cd .."
|
|
||||||
},
|
|
||||||
"ios.release": {
|
|
||||||
"name": "Notesnook",
|
|
||||||
"type": "ios.app",
|
|
||||||
"binaryPath": "ios/build/Build/Products/Release-iphonesimulator/Notesnook.app",
|
|
||||||
"build": "ENVFILE=.env.test xcodebuild -workspace ios/Notesnook.xcworkspace -scheme NotesnookRelease -sdk iphonesimulator -derivedDataPath ios/build"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
"android.emu.debug": {
|
|
||||||
"app": "android.debug",
|
|
||||||
"device": "emulator"
|
|
||||||
},
|
|
||||||
"android.emu.release": {
|
|
||||||
"app": "android.release",
|
|
||||||
"device": "emulator"
|
|
||||||
},
|
|
||||||
"ios.sim.release": {
|
|
||||||
"device": "simulator",
|
|
||||||
"app": "ios.release"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -14,17 +14,11 @@ import androidx.test.rule.ActivityTestRule;
|
|||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
@LargeTest
|
@LargeTest
|
||||||
public class DetoxTest {
|
public class DetoxTest {
|
||||||
// Replace 'MainActivity' with the value of android:name entry in
|
@Rule // (2)
|
||||||
// <activity> in AndroidManifest.xml
|
|
||||||
@Rule
|
|
||||||
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false);
|
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false);
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void runDetoxTests() {
|
public void runDetoxTests() {
|
||||||
// This is optional - in case you've decided to integrate TestButler
|
|
||||||
// See https://github.com/wix/Detox/blob/master/docs/Introduction.Android.md#8-test-butler-support-optional
|
|
||||||
//TestButlerProbe.assertReadyIfInstalled();
|
|
||||||
|
|
||||||
DetoxConfig detoxConfig = new DetoxConfig();
|
DetoxConfig detoxConfig = new DetoxConfig();
|
||||||
detoxConfig.idlePolicyConfig.masterTimeoutSec = 90;
|
detoxConfig.idlePolicyConfig.masterTimeoutSec = 90;
|
||||||
detoxConfig.idlePolicyConfig.idleResourceTimeoutSec = 60;
|
detoxConfig.idlePolicyConfig.idleResourceTimeoutSec = 60;
|
||||||
|
|||||||
@@ -56,6 +56,7 @@
|
|||||||
android:theme="@style/BootTheme"
|
android:theme="@style/BootTheme"
|
||||||
android:largeHeap="true"
|
android:largeHeap="true"
|
||||||
android:supportsRtl="false"
|
android:supportsRtl="false"
|
||||||
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
tools:replace="android:supportsRtl">
|
tools:replace="android:supportsRtl">
|
||||||
|
|
||||||
<receiver android:exported="false" android:name=".NoteWidget">
|
<receiver android:exported="false" android:name=".NoteWidget">
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<network-security-config>
|
||||||
|
<domain-config cleartextTrafficPermitted="true">
|
||||||
|
<domain includeSubdomains="true">10.0.2.2</domain>
|
||||||
|
<domain includeSubdomains="true">localhost</domain>
|
||||||
|
</domain-config>
|
||||||
|
</network-security-config>
|
||||||
@@ -27,3 +27,14 @@ buildscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
// All of Detox' artifacts are provided via the npm module
|
||||||
|
url "$rootDir/../../node_modules/detox/Detox-android"
|
||||||
|
}
|
||||||
|
|
||||||
|
maven { url 'https://www.jitpack.io' }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,14 +5,15 @@ const configs = {
|
|||||||
presets: ['module:metro-react-native-babel-preset'],
|
presets: ['module:metro-react-native-babel-preset'],
|
||||||
plugins: [
|
plugins: [
|
||||||
'@babel/plugin-transform-named-capturing-groups-regex',
|
'@babel/plugin-transform-named-capturing-groups-regex',
|
||||||
'react-native-reanimated/plugin'
|
'react-native-reanimated/plugin',
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
test: {
|
test: {
|
||||||
presets: ['module:metro-react-native-babel-preset'],
|
presets: ['module:metro-react-native-babel-preset'],
|
||||||
plugins: [
|
plugins: [
|
||||||
'@babel/plugin-transform-named-capturing-groups-regex',
|
'@babel/plugin-transform-named-capturing-groups-regex',
|
||||||
'react-native-reanimated/plugin'
|
'react-native-reanimated/plugin',
|
||||||
|
["@babel/plugin-transform-private-methods", { "loose": true }]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
production: {
|
production: {
|
||||||
@@ -20,7 +21,7 @@ const configs = {
|
|||||||
plugins: [
|
plugins: [
|
||||||
'transform-remove-console',
|
'transform-remove-console',
|
||||||
'@babel/plugin-transform-named-capturing-groups-regex',
|
'@babel/plugin-transform-named-capturing-groups-regex',
|
||||||
'react-native-reanimated/plugin'
|
'react-native-reanimated/plugin',
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
preset: 'react-native',
|
|
||||||
testEnvironment: 'node',
|
|
||||||
transform: {
|
|
||||||
'^.+\\.ts?$': 'ts-jest',
|
|
||||||
'^.+\\.(js|jsx)$': 'babel-jest'
|
|
||||||
},
|
|
||||||
transformIgnorePatterns: ['<rootDir>/../node_modules/'],
|
|
||||||
setupFiles: [
|
|
||||||
'../node_modules/react-native-gesture-handler/jestSetup.js',
|
|
||||||
'./jest.setup.js',
|
|
||||||
'../node_modules/react-native-mmkv-storage/jest/mmkvJestSetup.js'
|
|
||||||
],
|
|
||||||
roots: ['../__tests__']
|
|
||||||
};
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
import mockRNCNetInfo from '@react-native-community/netinfo/jest/netinfo-mock.js';
|
|
||||||
import 'react-native-get-random-values';
|
|
||||||
import mockSafeAreaContext from 'react-native-safe-area-context/jest/mock';
|
|
||||||
import './globals.js';
|
|
||||||
let mmkvMock = require('react-native-mmkv-storage/jest/dist/jest/memoryStore.js');
|
|
||||||
jest.mock('react-native-keychain', () => ({
|
|
||||||
ACCESSIBLE: {}
|
|
||||||
}));
|
|
||||||
mmkvMock.mock();
|
|
||||||
|
|
||||||
global.console = {
|
|
||||||
log: () => null
|
|
||||||
};
|
|
||||||
|
|
||||||
jest.mock('@react-native-community/netinfo', () => mockRNCNetInfo);
|
|
||||||
jest.mock('react-native-safe-area-context', () => mockSafeAreaContext);
|
|
||||||
jest.mock('rn-fetch-blob', () => {
|
|
||||||
return {
|
|
||||||
DocumentDir: () => {},
|
|
||||||
polyfill: () => {},
|
|
||||||
fs: {
|
|
||||||
dirs: {
|
|
||||||
CacheDir: '',
|
|
||||||
DocumentDir: ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
||||||
jest.mock('react-native/Libraries/EventEmitter/NativeEventEmitter');
|
|
||||||
|
|
||||||
jest.mock('react-native-share', () => ({
|
|
||||||
default: jest.fn()
|
|
||||||
}));
|
|
||||||
jest.mock('react-native-device-info', () => {
|
|
||||||
return {
|
|
||||||
supportedAbisSync: jest.fn(() => Promise.resolve('arm64-v8a')),
|
|
||||||
getApplicationName: jest.fn(() => Promise.resolve('My App')),
|
|
||||||
isTablet: jest.fn(() => Promise.resolve(false))
|
|
||||||
};
|
|
||||||
});
|
|
||||||
@@ -82,21 +82,21 @@
|
|||||||
"@types/react-test-renderer": "^18.0.0",
|
"@types/react-test-renderer": "^18.0.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.14.0",
|
"@typescript-eslint/eslint-plugin": "^5.14.0",
|
||||||
"@typescript-eslint/parser": "^5.14.0",
|
"@typescript-eslint/parser": "^5.14.0",
|
||||||
"babel-jest": "^29.2.1",
|
"babel-jest": "^29.6.2",
|
||||||
"babel-loader": "^8.2.5",
|
"babel-loader": "^8.2.5",
|
||||||
"babel-plugin-module-resolver": "^4.1.0",
|
"babel-plugin-module-resolver": "^4.1.0",
|
||||||
"babel-plugin-transform-remove-console": "6.9.4",
|
"babel-plugin-transform-remove-console": "6.9.4",
|
||||||
"detox": "^19.9.1",
|
"detox": "^20.11.2",
|
||||||
"eslint": "^8.19.0",
|
"eslint": "^8.19.0",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
"eslint-plugin-react": "^7.28.0",
|
"eslint-plugin-react": "^7.28.0",
|
||||||
"eslint-plugin-react-native": "^4.0.0",
|
"eslint-plugin-react-native": "^4.0.0",
|
||||||
"eslint-plugin-unused-imports": "^2.0.0",
|
"eslint-plugin-unused-imports": "^2.0.0",
|
||||||
"expect": "^28.1.3",
|
"expect": "^29.6.2",
|
||||||
"jest": "^29.2.1",
|
"jest": "^29.6.2",
|
||||||
"jest-circus": "^28.1.3",
|
"jest-circus": "^29.6.2",
|
||||||
"jest-image-snapshot": "^5.1.0",
|
"jest-image-snapshot": "^6.2.0",
|
||||||
"metro-react-native-babel-preset": "0.76.5",
|
"metro-react-native-babel-preset": "0.76.5",
|
||||||
"pixelmatch": "^5.3.0",
|
"pixelmatch": "^5.3.0",
|
||||||
"prettier": "^2.4.1",
|
"prettier": "^2.4.1",
|
||||||
@@ -106,9 +106,9 @@
|
|||||||
"react-refresh": "0.14.0",
|
"react-refresh": "0.14.0",
|
||||||
"react-test-renderer": "18.2.0",
|
"react-test-renderer": "18.2.0",
|
||||||
"terser-webpack-plugin": "^5.3.5",
|
"terser-webpack-plugin": "^5.3.5",
|
||||||
"ts-jest": "^28.0.7",
|
"ts-jest": "^29.1.1",
|
||||||
"typescript": "4.8.4",
|
"typescript": "4.8.4",
|
||||||
"webpack-cli": "^5.1.4",
|
"webpack-cli": "^5.1.4",
|
||||||
"webpack": "^5.74.0"
|
"webpack": "^5.88.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
6622
apps/mobile/package-lock.json
generated
6622
apps/mobile/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user