首页 > 解决方案 > 在启动应用程序之前禁用同步

问题描述

是否可以在 launchApp 之前/期间禁用同步(使用 newInstance:true)?理想情况下,我想要:

await device.launchApp({ newInstance: true, url });

立即解决。

我继承了一个在启动时会做奇怪事情的应用程序,所以我想在一开始就绕过同步,然后才重新启用它。

我试过这样的事情:

await device.disableSynchronization();
await device.launchApp({ newInstance: true, url });
await waitFor(element(by.id('root'))).toBeVisible().withTimeout(10000);
await device.enableSynchronization();

但是从我读到的文档中,总是为新实例重新启用同步。

有没有办法强制关闭同步,以便 device.launchApp 可以真正解决?

标签: detox

解决方案


现在可以使用启动参数来实现-detoxEnableSynchronization NO

请参阅此处的文档: https ://github.com/wix/Detox/blob/master/docs/APIRef.DeviceObjectAPI.md#10-detoxenablesynchronizationinitialize-detox-with-synchronization-enabled-or-disabled-at-app-launch


老答案:

Detox 不支持在启动时禁用同步,但如果网络请求导致问题,您可以将 URL 黑名单作为启动参数传递,这将禁用该网络请求的同步。

await device.launchApp({
  newInstance: true,
  launchArgs: { detoxURLBlacklistRegex: ' \\("http://192.168.1.253:19001/onchange","https://e.crashlytics.com/spi/v2/events"\\)' },
});

https://github.com/wix/Detox/blob/master/docs/APIRef.DeviceObjectAPI.md#10-initialize-the-url-blacklist-at-device-launch


推荐阅读