Unverified Commit c1710723 authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Take drive screenshot on test failure before app is stopped (#96973)

parent 6b95add2
...@@ -237,6 +237,7 @@ class DriveCommand extends RunCommandBase { ...@@ -237,6 +237,7 @@ class DriveCommand extends RunCommandBase {
? null ? null
: _fileSystem.file(stringArg('use-application-binary')); : _fileSystem.file(stringArg('use-application-binary'));
bool screenshotTaken = false;
try { try {
if (stringArg('use-existing-app') == null) { if (stringArg('use-existing-app') == null) {
await driverService.start( await driverService.start(
...@@ -285,6 +286,11 @@ class DriveCommand extends RunCommandBase { ...@@ -285,6 +286,11 @@ class DriveCommand extends RunCommandBase {
androidEmulator: boolArg('android-emulator'), androidEmulator: boolArg('android-emulator'),
profileMemory: stringArg('profile-memory'), profileMemory: stringArg('profile-memory'),
); );
if (testResult != 0 && screenshot != null) {
// Take a screenshot while the app is still running.
await _takeScreenshot(device);
screenshotTaken = true;
}
if (boolArg('keep-app-running') ?? (argResults['use-existing-app'] != null)) { if (boolArg('keep-app-running') ?? (argResults['use-existing-app'] != null)) {
_logger.printStatus('Leaving the application running.'); _logger.printStatus('Leaving the application running.');
...@@ -298,8 +304,9 @@ class DriveCommand extends RunCommandBase { ...@@ -298,8 +304,9 @@ class DriveCommand extends RunCommandBase {
throwToolExit(null); throwToolExit(null);
} }
} on Exception catch(_) { } on Exception catch(_) {
// On exceptions, including ToolExit, take a screenshot on the device. // On exceptions, including ToolExit, take a screenshot on the device
if (screenshot != null) { // unless a screenshot was already taken on test failure.
if (!screenshotTaken && screenshot != null) {
await _takeScreenshot(device); await _takeScreenshot(device);
} }
rethrow; rethrow;
......
...@@ -107,7 +107,9 @@ void main() { ...@@ -107,7 +107,9 @@ void main() {
throwsToolExit(), throwsToolExit(),
); );
expect(logger.statusText, contains('Screenshot written to drive_screenshots/drive_01.png')); // Takes the screenshot before the application would be killed (if --keep-app-running not passed).
expect(logger.statusText, contains('Screenshot written to drive_screenshots/drive_01.png\n'
'Leaving the application running.'));
expect(logger.statusText, isNot(contains('drive_02.png'))); expect(logger.statusText, isNot(contains('drive_02.png')));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FileSystem: () => fileSystem, FileSystem: () => fileSystem,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment