Драйвер Flutter зависает на заставке

Я пытаюсь настроить тесты драйвера Flutter для своего приложения, и приложение работает асинхронно, поэтому я нашел https://github.com/flutter/flutter/issues/41029, в котором говорится, что все, что вам нужно сделать, это добавить await driver.waitUntilFirstFrameRasterized();, и он должен работать, в то время как это предотвращает сбой теста, он просто не запускается.

Приложение просто зависает на заставке, даже не попадая в само приложение.

Насколько я понимаю, это все, что мне нужно настроить для запуска теста.

  FlutterDriver driver;
  // Connect to the Flutter driver before running any tests.
  setUpAll(() async {
    driver = await FlutterDriver.connect();
    await driver.waitUntilFirstFrameRasterized();

    // await Directory('screenshots').create();
  });

  // Close the connection to the driver after the tests have completed.
  tearDownAll(() async {
    if (driver != null) {
      await driver.close();
    }
  });

Однако все, что я получаю в своем терминале, - это следующий вывод:

VMServiceFlutterDriver: Connecting to Flutter application at http://127.0.0.1:54264/tt9kN4jBSrc=/
VMServiceFlutterDriver: Isolate found with number: 2942164624858163
VMServiceFlutterDriver: Isolate is paused at start.
VMServiceFlutterDriver: Attempting to resume isolate
VMServiceFlutterDriver: Connected to Flutter application.
VMServiceFlutterDriver: waitForCondition message is taking a long time to complete...

Я оставил его на несколько минут, и ничего не происходит, я отключил инициализацию firebase на случай, если это каким-то образом блокирует ее, так как мне нужно будет принять диалоговое окно с предупреждением, а не то, что я даже захожу так далеко, насколько я могу видеть.


person RemeJuan    schedule 12.11.2020    source источник


Ответы (1)


Оказывается, мне тоже нужно было использовать IsolatesWorkaround

  FlutterDriver driver;
  IsolatesWorkaround workaround;
  // Connect to the Flutter driver before running any tests.
  setUpAll(() async {
    driver = await FlutterDriver.connect();
    workaround = IsolatesWorkaround(driver);
    await workaround.resumeIsolates();
    await driver.waitUntilFirstFrameRasterized();

    if (!await Directory('screenshots').exists()) {
      await Directory('screenshots').create();
    }
  });

  // Close the connection to the driver after the tests have completed.
  tearDownAll(() async {
    await driver?.close();
    await workaround.tearDown();
  });

См: https://gist.github.com/vishna/03c5d5e8eb14c5e567256782cddce8b4

person RemeJuan    schedule 12.11.2020