Skip to main content

Ephemeral server

Use TestClient.ephemeralServer with a handler provider (e.g., server_testing_shelf) to spin up a real HTTP server per test group.

final handler = ShelfRequestHandler(app);
final client = TestClient.ephemeralServer(handler);
final baseUrl = await client.baseUrlFuture;

browserGroup('e2e', baseUrl: baseUrl, define: (getBrowser) {
test('home', () async {
final browser = getBrowser();
await browser.visit('/');
await browser.assertTitle('Home');
});
tearDownAll(() async { await client.close(); });
});

Lifecycle

  • Create client before browserGroup, await baseUrlFuture, and pass baseUrl.
  • Always close the client in tearDownAll.