mardi 3 septembre 2019

Detox: Waiting for network requests to finish timeout

I'm trying to set up detox to run e2e tests on my app (react native + expokit). As i had mentioned in https://github.com/wix/Detox/issues/1627, my test keeps timing out with

Waiting for network requests to finish.: (
    "http://10.4.12.38:19001/symbolicate",
    "http://10.4.12.38:19001/symbolicate",
    "http://10.4.12.38:19001/symbolicate",
    "http://10.4.12.38:19001/symbolicate",
    "http://10.4.12.38:19001/onchange"
)

I've added those urls to detoxURLBlacklistRegex but it doesn't do the trick. As I said in https://github.com/wix/Detox/issues/1627 i thought disabling live reload would make the tests pass but it is not always the case - sometimes it does, sometimes it times out. Here's my init.js:

const detox = require('detox');
const adapter = require('detox/runners/jest/adapter');
const specReporter = require('detox/runners/jest/specReporter');

const config = require('../package.json').detox;

// Set the default timeout
jest.setTimeout(30000);
jasmine.getEnv().addReporter(adapter);

// This takes care of generating status logs on a per-spec basis. By default, jest only reports at file-level.
// This is strictly optional.
jasmine.getEnv().addReporter(specReporter);

beforeAll(async () => {
  await detox.init(config, {
    launchApp: false,
  });
  await device.launchApp({
    permissions: { notifications: 'YES' },
    launchArgs: {
      detoxPrintBusyIdleResources: 'YES',
      detoxURLBlacklistRegex:
        '.*://10.4.12.38.*',
    },
  });
});

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

afterAll(async () => {
  await adapter.afterAll();
  await detox.cleanup();
});

The issue is repoducible in this repo: https://github.com/clems36/detox-test

Here's the trace:

detox[55327] TRACE: [Detox.js/DETOX_BEFORE_EACH] running test: "Example should show hello screen after tap"
detox[55327] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onBeforeEach({
  title: 'should show hello screen after tap',
  fullName: 'Example should show hello screen after tap',
  status: 'running'
})
detox[55327] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"reactNativeReload","params":{},"messageId":-1000}
detox[55327] TRACE: [DetoxServer.js/MESSAGE] role=tester action=reactNativeReload (sessionId=6ee3a6df-152d-a069-f95a-ecd53e7fc872)
detox[55327] TRACE: [AsyncWebSocket.js/WEBSOCKET_SEND] {"type":"invoke","params":{"target":{"type":"Invocation","value":{"target":{"type":"EarlGrey","value":"instance"},"method":"detox_selectElementWithMatcher:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYMatchers"},"method":"matcherForAccessibilityID:","args":[{"type":"NSString","value":"hello_button"}]}}]}},"method":"performAction:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYActions"},"method":"actionForTap","args":[]}}]},"messageId":2}
detox[55327] TRACE: [DetoxServer.js/MESSAGE] role=tester action=invoke (sessionId=6ee3a6df-152d-a069-f95a-ecd53e7fc872)
Example: should show hello screen after tap [FAIL]
Example: should show world screen after tap
detox[55327] TRACE: [Detox.js/DETOX_AFTER_EACH] failed test: "Example should show hello screen after tap"
detox[55327] TRACE: [ArtifactsManager.js/LIFECYCLE] artifactsManager.onAfterEach({
  title: 'should show hello screen after tap',
  fullName: 'Example should show hello screen after tap',
  status: 'failed',
  timedOut: true
})
detox[55327] WARN:  [Client.js/PENDING_REQUESTS] App has not responded to the network requests below:
  (id = 2) invoke: {"target":{"type":"Invocation","value":{"target":{"type":"EarlGrey","value":"instance"},"method":"detox_selectElementWithMatcher:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYMatchers"},"method":"matcherForAccessibilityID:","args":[{"type":"NSString","value":"hello_button"}]}}]}},"method":"performAction:","args":[{"type":"Invocation","value":{"target":{"type":"Class","value":"GREYActions"},"method":"actionForTap","args":[]}}]}
  (id = -1000) reactNativeReload: {}

That might be the reason why the test "Example should show hello screen after tap" has timed out.

Aucun commentaire:

Enregistrer un commentaire