Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keep getting an error when a test fails running tests on Android: Error: Command failed: node_modules/.bin/jest --config e2e/config.json '--testNamePattern=^((?!:ios:).)*$' --maxWorkers 1 "e2e" #1979

Closed
1 task done
psatler opened this issue Mar 27, 2020 · 2 comments

Comments

@psatler
Copy link

psatler commented Mar 27, 2020

Description

When running tests on an Android simulator, if one of them fails, at the end of the test report it is shown an error message like the following:

detox[8530] ERROR: [cli.js] Error: Command failed: node_modules/.bin/jest --config e2e/config.json '--testNamePattern=^((?!:ios:).)*$' --maxWorkers 1 "e2e"

If all tests pass, this message does not appears, as shown at the following screenshot:
detox-success

Below you can check the last part of what is shown in the terminal when a test fails:

Check device logs for full details!

      13 | 
      14 |   it("should have welcome screen", async () => {
    > 15 |     await expect(element(by.id("WelcomeScreen"))).toBeVisible()
         |                                                   ^
      16 |   })
      17 | 
      18 |   // it("should go to next screen after tap", async () => {

      at Client.execute (../node_modules/detox/src/client/Client.js:92:28)
      at InvocationManager.execute (../node_modules/detox/src/invoke.js:11:39)
      at MatcherAssertionInteraction.execute (../node_modules/detox/src/android/expect.js:128:35)
      at ExpectElement.toBeVisible (../node_modules/detox/src/android/expect.js:275:112)
      at _callee3$ (firstTest.spec.js:15:51)
      at tryCatch (../node_modules/regenerator-runtime/runtime.js:45:40)
      at Generator.invoke [as _invoke] (../node_modules/regenerator-runtime/runtime.js:271:22)
      at Generator.prototype.<computed> [as next] (../node_modules/regenerator-runtime/runtime.js:97:21)
      at tryCatch (../node_modules/regenerator-runtime/runtime.js:45:40)
      at invoke (../node_modules/regenerator-runtime/runtime.js:135:20)
      at ../node_modules/regenerator-runtime/runtime.js:170:11
      at callInvokeWithMethodAndArg (../node_modules/regenerator-runtime/runtime.js:169:16)
      at AsyncIterator.enqueue (../node_modules/regenerator-runtime/runtime.js:192:13)
      at AsyncIterator.prototype.<computed> [as next] (../node_modules/regenerator-runtime/runtime.js:97:21)
      at Object.exports.async (../node_modules/regenerator-runtime/runtime.js:216:14)

detox[9947] INFO:  at e2e/login-screen-tests/login-screen.spec.js:99:9 
detox[9947] INFO:  at e2e/login-screen-tests/login-screen.spec.js:100:9 
detox[9947] INFO:  [DetoxServer.js] server listening on localhost:36337...
 PASS  e2e/login-screen-tests/login-screen.spec.js (18.825s)

Test Suites: 1 failed, 1 passed, 2 total
Tests:       1 failed, 2 passed, 3 total
Snapshots:   0 total
Time:        36.553s
Ran all test suites matching /e2e/i with tests matching "^((?!:ios:).)*$".
detox[9939] ERROR: [cli.js] Error: Command failed: node_modules/.bin/jest --config e2e/config.json '--testNamePattern=^((?!:ios:).)*$' --maxWorkers 1 "e2e"

You can also see the full report at the screenshot below (I zoomed out a bit to fit on the screen):
detox-error

And below show the last pieces when running with detox test -c android.emu.debug --loglevel trace:

detox-error2

What could I be doing wrong? Can someone help me out figuring out what is the problem?

To Reproduce

  • I have tested this issue on the latest Detox release and it still reproduces

  • package.json

{
  "name": "rmb-rn",
  "version": "0.5.0",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint index.js app --fix --ext .js,.ts,.tsx",
    "test:e2e": "detox test -c ios.sim.debug",
    "build:e2e": "detox build -c ios.sim.debug",
    "ci:test:e2e": "detox test -c ios.sim.release -l verbose --cleanup",
    "ci:build:e2e": "detox build -c ios.sim.release",
    "compile": "tsc --noEmit -p . --pretty",
    "format": "npm-run-all format:*",
    "format:js": "prettier --write {.,**}/*.js",
    "format:json": "prettier --write {.,**}/*.json",
    "format:md": "prettier --write {.,**}/*.md",
    "format:ts": "prettier --write {.,**}/*.{ts,tsx}",
    "hack:types-react-navigation": "rimraf node_modules/@types/react-navigation/node_modules/@types",
    "hack:types-react-native": "rimraf node_modules/@types/react-native/node_modules/@types",
    "hack:types-react-test-renderer": "rimraf node_modules/@types/react-test-renderer/node_modules/@types",
    "patch": "patch-package",
    "postinstall": "node ./bin/postInstall",
    "prepare": "npm-run-all patch hack:*",
    "storybook": "(adb reverse tcp:7007 tcp:7007 || true) && start-storybook -p 7007",
    "build-storybook": "build-storybook -c .storybook -o .out",
    "adb": "adb reverse tcp:9090 tcp:9090 && adb reverse tcp:3000 tcp:3000 && adb reverse tcp:9001 tcp:9001 && adb reverse tcp:8081 tcp:8081"
  },
  "dependencies": {
    "@react-native-community/async-storage": "^1.5.1",
    "@react-native-community/datetimepicker": "^2.2.2",
    "@react-native-community/masked-view": "^0.1.7",
    "@storybook/addon-actions": "^6.0.0-alpha.2",
    "@storybook/addon-links": "^6.0.0-alpha.2",
    "@storybook/addons": "^6.0.0-alpha.2",
    "@storybook/react": "^6.0.0-alpha.2",
    "@types/node": "^13.5.3",
    "animated": "^0.2.2",
    "apisauce": "1.1.1",
    "babel-loader": "^8.0.6",
    "i18n-js": "^3.0.11",
    "lodash.throttle": "4.1.1",
    "mobx": "5.15.0",
    "mobx-react-lite": "^1.4.1",
    "mobx-state-tree": "^3.14.1",
    "moment": "^2.24.0",
    "native-base": "^2.13.8",
    "ramda": "0.26.1",
    "react": "16.12.0",
    "react-dom": "^16.12.0",
    "react-native": "0.61.5",
    "react-native-action-sheet": "^2.2.0",
    "react-native-camera": "^3.19.1",
    "react-native-contacts": "^5.0.7",
    "react-native-device-info": "^5.5.3",
    "react-native-gesture-handler": "^1.5.0",
    "react-native-keyboard-listener": "^1.1.0",
    "react-native-keychain": "4.0.1",
    "react-native-localize": "^1.0.0",
    "react-native-reanimated": "^1.4.0",
    "react-native-safe-area-context": "^0.7.3",
    "react-native-screens": "^2.0.0-alpha.6",
    "react-native-snap-carousel": "^3.8.4",
    "react-native-splash-screen": "3.2.0",
    "react-native-uuid": "^1.4.9",
    "react-native-vector-icons": "^6.6.0",
    "react-navigation": "4.2.2",
    "react-navigation-drawer": "^2.3.3",
    "react-navigation-stack": "2.2.3",
    "react-navigation-tabs": "^2.6.0",
    "reactotron-mst": "^3.1.1",
    "reactotron-react-native": "^4.0.0-beta.1",
    "validate.js": "0.13.1"
  },
  "devDependencies": {
    "@babel/core": "^7.7.4",
    "@babel/plugin-proposal-decorators": "^7.0.0",
    "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
    "@babel/runtime": "^7.7.4",
    "@emotion/core": "^10.0.15",
    "@storybook/addon-storyshots": "6.0.0-alpha.2",
    "@storybook/react-native": "^5.3.9",
    "@storybook/react-native-server": "^5.3.9",
    "@types/jest": "25.1.4",
    "@types/ramda": "0.26.36",
    "@types/react": "16.9.13",
    "@types/react-native": "0.60.23",
    "@types/react-navigation": "3.4.0",
    "@types/react-test-renderer": "16.9.1",
    "@typescript-eslint/eslint-plugin": "2.9.0",
    "@typescript-eslint/parser": "2.9.0",
    "babel-jest": "^25.2.3",
    "detox": "^16.0.1",
    "emotion-theming": "^10.0.14",
    "eslint": "^6.6.0",
    "eslint-config-prettier": "^6.0.0",
    "eslint-config-standard": "14.1.0",
    "eslint-plugin-import": "^2.15.0",
    "eslint-plugin-node": "10.0.0",
    "eslint-plugin-promise": "^4.0.1",
    "eslint-plugin-react": "^7.12.4",
    "eslint-plugin-react-native": "^3.6.0",
    "eslint-plugin-standard": "^4.0.0",
    "ignite-bowser": "^4.11.3",
    "jest": "^25.2.3",
    "jetifier": "^1.6.1",
    "metro-react-native-babel-preset": "^0.57.0",
    "npm-run-all": "4.1.5",
    "patch-package": "6.2.0",
    "postinstall-prepare": "1.0.1",
    "prettier": "1.19.1",
    "react-devtools-core": "4.2.1",
    "react-native-dotenv": "^0.2.0",
    "react-powerplug": "1.0.0",
    "react-test-renderer": "16.12.0",
    "rimraf": "3.0.0",
    "solidarity": "2.3.1",
    "typescript": "3.7.2"
  },
  "jest": {
    "preset": "react-native",
    "setupFiles": [
      "<rootDir>/node_modules/react-native/jest/setup.js",
      "<rootDir>/test/setup.ts"
    ],
    "testPathIgnorePatterns": [
      "/node_modules/",
      "/e2e"
    ],
    "transformIgnorePatterns": [
      "node_modules/(?!(jest-)?react-native|react-native|react-navigation|@react-navigation|@storybook|@react-native-community)"
    ]
  },
  "detox": {
    "test-runner": "jest",
    "configurations": {
      "ios.sim.debug": {
        "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/rmbRn.app",
        "build": "xcodebuild -workspace ios/rmbRn.xcworkspace -scheme rmbRn -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build -UseModernBuildSystem=NO",
        "type": "ios.simulator",
        "name": "iPhone 8"
      },
      "ios.sim.release": {
        "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/rmbRn.app",
        "build": "xcodebuild -workspace ios/rmbRn.xcworkspace -scheme rmbRn -configuration Release -sdk iphonesimulator -derivedDataPath ios/build -UseModernBuildSystem=NO",
        "type": "ios.simulator",
        "name": "iPhone 8"
      },
      "android.emu.debug": {
        "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
        "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
        "type": "android.emulator",
        "device": {
          "avdName": "Nexus_4_API_28"
        }
      },
      "android.emu.debug-real-device": {
        "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
        "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
        "type": "android.attached",
        "name": "ce50806d386d"
      },
      "android.emu.release": {
        "binaryPath": "android/app/build/outputs/apk/release/app-release.apk",
        "build": "cd android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && cd ..",
        "type": "android.emulator",
        "device": {
          "avdName": "Nexus_4_API_28"
        }
      }
    }
  }
}
  • e2e folder below:

    1. init.js
const detox = require("detox")
const config = require("../package.json").detox
const adapter = require("detox/runners/jest/adapter")

jest.setTimeout(120000)
jasmine.getEnv().addReporter(adapter)

beforeAll(async () => {
  await detox.init(config)
})

beforeEach(async () => {
  await adapter.beforeEach()
})

afterAll(async () => {
  await adapter.afterAll()
  await detox.cleanup()
})
    1. config.json
{
  "setupFilesAfterEnv": ["./init.js"],
  "testEnvironment": "node"
}
    1. firstTest.spec.js The test suite with a failing test
{
  describe("Example", () => {
  beforeEach(async () => {
    await device.reloadReactNative()
  })

  it('should be visible the account number', async () => {
    const usernameInput = await element(by.id("loginScreen-accountNumber"))
    await expect(usernameInput).toBeVisible()
  })

 // the failing test is below
  it("should have welcome screen", async () => {
    await expect(element(by.id("WelcomeScreen"))).toBeVisible()
  })
})
}

Expected behavior
The expected behavior, I believe, is the test report to end without displaying an error.

Device Logs
adb_logs.log

Environment:

  • Detox: 16.0.1
  • React Native: 0.61.5
  • Node: 12.16.1
  • Device: AVD Android Studio Nexus 4 API 28
  • OS: Ubuntu 18.04.4 LTS
  • Test-runner (select one): Jest (as shown in the package.json above)
@support
Copy link

support bot commented Mar 27, 2020

We use the issue tracker exclusively for bug reports and feature requests. This issue appears to be a general usage or support question. Instead, please ask a question on Stack Overflow with the detox tag.

Feel free to post your Stack Overflow question here for more visibility. We'll take a look at it.

For issues with Expo apps, it is most likely not an issue with Detox itself, but with the Expo runtime or with incorrect Detox setup. For support on how to use Detox with Expo, you should contact the Expo team or the Expo community.

For more information on bots in this repository, read this discussion.

@support support bot closed this as completed Mar 27, 2020
@psatler
Copy link
Author

psatler commented Mar 27, 2020

Here is the link for the stackoverflow question: https://stackoverflow.com/questions/60892626/keep-getting-an-error-when-a-test-fails-running-tests-on-android

I'm not sure if this is a bug or not, that's why I posted it as a general question.

@lock lock bot locked as resolved and limited conversation to collaborators Apr 2, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant