[ci] Drive tests with html renderer if CHANNEL is stable. (#7146)

Introduces a small fork in the `drive_examples_command` to run integration tests with `--web-renderer=html` in the `stable` channel (and `--web-renderer=canvaskit` in `master`).

This is supposed to be removed, once the current `master` rolls into `stable` (see clean-up issue referenced below).

## Issues

* Part of: https://github.com/flutter/flutter/issues/143543
* Prevents flakes: https://github.com/flutter/packages/pull/7115#issuecomment-2226661488
* Clean-up issue: https://github.com/flutter/flutter/issues/151869
This commit is contained in:
David Iglesias
2024-07-17 14:52:24 -07:00
committed by GitHub
parent 2aee0b97b5
commit 8cf4d96f47
2 changed files with 62 additions and 1 deletions

View File

@ -119,7 +119,11 @@ class DriveExamplesCommand extends PackageLoopingCommand {
'web-server',
'--web-port=7357',
'--browser-name=chrome',
// TODO(dit): Clean this up, https://github.com/flutter/flutter/issues/151869
if (platform.environment['CHANNEL']?.toLowerCase() == 'master')
'--web-renderer=canvaskit',
if (platform.environment['CHANNEL']?.toLowerCase() != 'master')
'--web-renderer=html',
if (platform.environment.containsKey('CHROME_EXECUTABLE'))
'--chrome-binary=${platform.environment['CHROME_EXECUTABLE']}',
],

View File

@ -38,6 +38,9 @@ void main() {
runner = CommandRunner<void>(
'drive_examples_command', 'Test for drive_example_command');
runner.addCommand(command);
// TODO(dit): Clean this up, https://github.com/flutter/flutter/issues/151869
mockPlatform.environment['CHANNEL'] = 'master';
});
void setMockFlutterDevicesOutput({
@ -688,6 +691,60 @@ void main() {
]));
});
// TODO(dit): Clean this up, https://github.com/flutter/flutter/issues/151869
test('drives a web plugin (html renderer in stable)', () async {
// Override the platform to simulate CHANNEL: stable
mockPlatform.environment['CHANNEL'] = 'stable';
final RepositoryPackage plugin = createFakePlugin(
'plugin',
packagesDir,
extraFiles: <String>[
'example/integration_test/plugin_test.dart',
'example/test_driver/integration_test.dart',
'example/web/index.html',
],
platformSupport: <String, PlatformDetails>{
platformWeb: const PlatformDetails(PlatformSupport.inline),
},
);
final Directory pluginExampleDirectory = getExampleDir(plugin);
final List<String> output = await runCapturingPrint(runner, <String>[
'drive-examples',
'--web',
]);
expect(
output,
containsAllInOrder(<Matcher>[
contains('Running for plugin'),
contains('No issues found!'),
]),
);
expect(
processRunner.recordedCalls,
orderedEquals(<ProcessCall>[
ProcessCall(
getFlutterCommand(mockPlatform),
const <String>[
'drive',
'-d',
'web-server',
'--web-port=7357',
'--browser-name=chrome',
'--web-renderer=html',
'--driver',
'test_driver/integration_test.dart',
'--target',
'integration_test/plugin_test.dart',
],
pluginExampleDirectory.path),
]));
});
test('runs chromedriver when requested', () async {
final RepositoryPackage plugin = createFakePlugin(
'plugin',