From 98f9b7397d427df1aa57ebe498a0169143ca571f Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Mon, 9 Dec 2019 13:21:16 -0800 Subject: [PATCH 1/4] Enable web engine unit tests on Firefox --- .cirrus.yml | 4 +- lib/web_ui/dev/firefox.dart | 3 +- lib/web_ui/dev/test_runner.dart | 109 +++++++++++------- lib/web_ui/test/compositing_test.dart | 2 +- lib/web_ui/test/dom_renderer_test.dart | 2 +- .../semantics/semantics_helper_test.dart | 2 +- .../test/engine/semantics/semantics_test.dart | 2 +- lib/web_ui/test/paragraph_test.dart | 10 +- .../test/text/font_collection_test.dart | 8 +- lib/web_ui/test/text_editing_test.dart | 10 +- lib/web_ui/test/text_test.dart | 4 +- 11 files changed, 89 insertions(+), 67 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 17dafd5cc2f2b..5da431d8287e9 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -75,8 +75,8 @@ task: $ENGINE_PATH/src/out/host_debug_unopt/dart-sdk/bin/pub get cd $ENGINE_PATH/src/flutter/lib/web_ui $ENGINE_PATH/src/out/host_debug_unopt/dart-sdk/bin/pub get - export DART="$ENGINE_PATH/src/out/host_debug_unopt/dart-sdk/bin/dart" - $DART dev/firefox_installer_test.dart + export FELT="$ENGINE_PATH/src/out/host_debug_unopt/dart-sdk/bin/dart dev/felt.dart" + $FELT test --browser=firefox --firefox-version=71.0 - name: build_and_test_android_unopt_debug env: USE_ANDROID: "True" diff --git a/lib/web_ui/dev/firefox.dart b/lib/web_ui/dev/firefox.dart index eb05a07a5553b..787daf6befc8a 100644 --- a/lib/web_ui/dev/firefox.dart +++ b/lib/web_ui/dev/firefox.dart @@ -48,12 +48,11 @@ class Firefox extends Browser { var dir = createTempDir(); var args = [ url.toString(), - if (!debug) '--headless', + '--headless', '-width $kMaxScreenshotWidth', '-height $kMaxScreenshotHeight', '-new-window', '-new-instance', - '-prefs { "dom.disable_beforeunload" = true, "toolkit.startup.max_resumed_crashes"=999999 } ', '--start-debugger-server $kDevtoolsPort', ]; diff --git a/lib/web_ui/dev/test_runner.dart b/lib/web_ui/dev/test_runner.dart index 48891327206f0..f240cfc200409 100644 --- a/lib/web_ui/dev/test_runner.dart +++ b/lib/web_ui/dev/test_runner.dart @@ -83,6 +83,8 @@ class TestCommand extends Command { String get browser => argResults['browser']; + bool get isChrome => argResults['browser'] == 'chrome'; + /// When running screenshot tests writes them to the file system into /// ".dart_tool/goldens". bool get doUpdateScreenshotGoldens => argResults['update-screenshot-goldens']; @@ -98,54 +100,75 @@ class TestCommand extends Command { 'test', )); - // Separate screenshot tests from unit-tests. Screenshot tests must run - // one at a time. Otherwise, they will end up screenshotting each other. - // This is not an issue for unit-tests. - final FilePath failureSmokeTestPath = FilePath.fromWebUi( - 'test/golden_tests/golden_failure_smoke_test.dart', - ); - final List screenshotTestFiles = []; - final List unitTestFiles = []; - - for (io.File testFile - in testDir.listSync(recursive: true).whereType()) { - final FilePath testFilePath = FilePath.fromCwd(testFile.path); - if (!testFilePath.absolute.endsWith('_test.dart')) { - // Not a test file at all. Skip. - continue; - } - if (testFilePath == failureSmokeTestPath) { - // A smoke test that fails on purpose. Skip. - continue; + // Screenshot tests and smoke tests only run in Chrome. + if (isChrome) { + // Separate screenshot tests from unit-tests. Screenshot tests must run + // one at a time. Otherwise, they will end up screenshotting each other. + // This is not an issue for unit-tests. + final FilePath failureSmokeTestPath = FilePath.fromWebUi( + 'test/golden_tests/golden_failure_smoke_test.dart', + ); + final List screenshotTestFiles = []; + final List unitTestFiles = []; + + for (io.File testFile + in testDir.listSync(recursive: true).whereType()) { + final FilePath testFilePath = FilePath.fromCwd(testFile.path); + if (!testFilePath.absolute.endsWith('_test.dart')) { + // Not a test file at all. Skip. + continue; + } + if (testFilePath == failureSmokeTestPath) { + // A smoke test that fails on purpose. Skip. + continue; + } + + if (isChrome && + path.split(testFilePath.relativeToWebUi).contains('golden_tests')) { + screenshotTestFiles.add(testFilePath); + } else { + unitTestFiles.add(testFilePath); + } } - if (path.split(testFilePath.relativeToWebUi).contains('golden_tests')) { - screenshotTestFiles.add(testFilePath); - } else { - unitTestFiles.add(testFilePath); + + // This test returns a non-zero exit code on purpose. Run it separately. + if (io.Platform.environment['CIRRUS_CI'] != 'true') { + await _runTestBatch( + [failureSmokeTestPath], + concurrency: 1, + expectFailure: true, + ); + _checkExitCode(); } - } - // This test returns a non-zero exit code on purpose. Run it separately. - if (io.Platform.environment['CIRRUS_CI'] != 'true') { - await _runTestBatch( - [failureSmokeTestPath], - concurrency: 1, - expectFailure: true, - ); + // Run all unit-tests as a single batch. + await _runTestBatch(unitTestFiles, concurrency: 10, expectFailure: false); _checkExitCode(); - } - - // Run all unit-tests as a single batch. - await _runTestBatch(unitTestFiles, concurrency: 10, expectFailure: false); - _checkExitCode(); - // Run screenshot tests one at a time. - for (FilePath testFilePath in screenshotTestFiles) { - await _runTestBatch( - [testFilePath], - concurrency: 1, - expectFailure: false, - ); + // Run screenshot tests one at a time. + for (FilePath testFilePath in screenshotTestFiles) { + await _runTestBatch( + [testFilePath], + concurrency: 1, + expectFailure: false, + ); + _checkExitCode(); + } + } else { + final List unitTestFiles = []; + for (io.File testFile + in testDir.listSync(recursive: true).whereType()) { + final FilePath testFilePath = FilePath.fromCwd(testFile.path); + if (!testFilePath.absolute.endsWith('_test.dart')) { + // Not a test file at all. Skip. + continue; + } + if(!path.split(testFilePath.relativeToWebUi).contains('golden_tests')) { + unitTestFiles.add(testFilePath); + } + } + // Run all unit-tests as a single batch. + await _runTestBatch(unitTestFiles, concurrency: 10, expectFailure: false); _checkExitCode(); } } diff --git a/lib/web_ui/test/compositing_test.dart b/lib/web_ui/test/compositing_test.dart index ea0b98901c55c..e2496c2be8136 100644 --- a/lib/web_ui/test/compositing_test.dart +++ b/lib/web_ui/test/compositing_test.dart @@ -173,7 +173,7 @@ void main() { expect(picture.buildCount, 1); expect(picture.updateCount, 0); expect(picture.applyPaintCount, 2); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); }); } diff --git a/lib/web_ui/test/dom_renderer_test.dart b/lib/web_ui/test/dom_renderer_test.dart index 7ff6fc078c29a..cbaed44a273a1 100644 --- a/lib/web_ui/test/dom_renderer_test.dart +++ b/lib/web_ui/test/dom_renderer_test.dart @@ -115,7 +115,7 @@ void main() { final DomRenderer renderer = DomRenderer(); renderer.reset(); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('accesibility placeholder is attached after creation', () { DomRenderer(); diff --git a/lib/web_ui/test/engine/semantics/semantics_helper_test.dart b/lib/web_ui/test/engine/semantics/semantics_helper_test.dart index c7fd8bc204176..355294c4b499b 100644 --- a/lib/web_ui/test/engine/semantics/semantics_helper_test.dart +++ b/lib/web_ui/test/engine/semantics/semantics_helper_test.dart @@ -142,6 +142,6 @@ void main() { mobileSemanticsEnabler.tryEnableSemantics(event); expect(shouldForwardToFramework, true); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); }); } diff --git a/lib/web_ui/test/engine/semantics/semantics_test.dart b/lib/web_ui/test/engine/semantics/semantics_test.dart index 892e19b247f0b..40ceac4c01204 100644 --- a/lib/web_ui/test/engine/semantics/semantics_test.dart +++ b/lib/web_ui/test/engine/semantics/semantics_test.dart @@ -806,7 +806,7 @@ void _testTextField() { expect(await logger.actionLog.first, ui.SemanticsAction.tap); semantics().semanticsEnabled = false; - }); + }, skip: (browserEngine == BrowserEngine.firefox)); } void _testCheckables() { diff --git a/lib/web_ui/test/paragraph_test.dart b/lib/web_ui/test/paragraph_test.dart index fce82efd3561a..c9840962e1354 100644 --- a/lib/web_ui/test/paragraph_test.dart +++ b/lib/web_ui/test/paragraph_test.dart @@ -7,7 +7,7 @@ import 'package:ui/ui.dart'; import 'package:test/test.dart'; -void testEachMeasurement(String description, VoidCallback body) { +void testEachMeasurement(String description, VoidCallback body, {bool skip}) { test(description, () async { try { TextMeasurementService.initialize(rulerCacheCapacity: 2); @@ -15,7 +15,7 @@ void testEachMeasurement(String description, VoidCallback body) { } finally { TextMeasurementService.clearCache(); } - }); + }, skip: skip); test('$description (canvas measurement)', () async { try { TextMeasurementService.initialize(rulerCacheCapacity: 2); @@ -25,7 +25,7 @@ void testEachMeasurement(String description, VoidCallback body) { TextMeasurementService.enableExperimentalCanvasImplementation = false; TextMeasurementService.clearCache(); } - }); + }, skip: skip); } void main() async { @@ -104,7 +104,7 @@ void main() async { expect(paragraph.minIntrinsicWidth, fontSize * 10.0); expect(paragraph.maxIntrinsicWidth, fontSize * 10.0); } - }); + }, skip: (browserEngine == BrowserEngine.firefox)); testEachMeasurement('predictably lays out a multi-line rich paragraph', () { for (double fontSize in [10.0, 20.0, 30.0, 40.0]) { @@ -126,7 +126,7 @@ void main() async { expect(paragraph.minIntrinsicWidth, fontSize * 5.0); expect(paragraph.maxIntrinsicWidth, fontSize * 16.0); } - }); + }, skip: (browserEngine == BrowserEngine.firefox)); testEachMeasurement('getBoxesForRange returns a box', () { final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle( diff --git a/lib/web_ui/test/text/font_collection_test.dart b/lib/web_ui/test/text/font_collection_test.dart index c3cb51d865284..f99fdd3dc232a 100644 --- a/lib/web_ui/test/text/font_collection_test.dart +++ b/lib/web_ui/test/text/font_collection_test.dart @@ -84,7 +84,7 @@ void main() { expect(fontFamilyList.length, equals(2)); expect(fontFamilyList, contains('\'/Ahem\'')); expect(fontFamilyList, contains('/Ahem')); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('Register Asset twice with exclamation mark', () async { final String _testFontFamily = 'Ahem!!ahem'; @@ -101,7 +101,7 @@ void main() { expect(fontFamilyList.length, equals(2)); expect(fontFamilyList, contains('\'Ahem!!ahem\'')); expect(fontFamilyList, contains('Ahem!!ahem')); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('Register Asset twice with coma', () async { final String _testFontFamily = 'Ahem ,ahem'; @@ -118,7 +118,7 @@ void main() { expect(fontFamilyList.length, equals(2)); expect(fontFamilyList, contains('\'Ahem ,ahem\'')); expect(fontFamilyList, contains('Ahem ,ahem')); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('Register Asset twice with a digit at the start of a token', () async { final String testFontFamily = 'Ahem 1998'; @@ -136,5 +136,5 @@ void main() { expect(fontFamilyList, contains('Ahem 1998')); expect(fontFamilyList, contains('\'Ahem 1998\'')); }); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); } diff --git a/lib/web_ui/test/text_editing_test.dart b/lib/web_ui/test/text_editing_test.dart index 9a5e32f973fba..5f63bdd090b1d 100644 --- a/lib/web_ui/test/text_editing_test.dart +++ b/lib/web_ui/test/text_editing_test.dart @@ -186,7 +186,7 @@ void main() { // There should be no input action. expect(lastInputAction, isNull); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('Can set editing state correctly', () { editingElement.enable( @@ -217,7 +217,7 @@ void main() { // There should be no input action. expect(lastInputAction, isNull); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('Multi-line mode also works', () { // The textarea element is created lazily. @@ -262,7 +262,7 @@ void main() { // There should be no input action. expect(lastInputAction, isNull); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('Same instance can be re-enabled with different config', () { // Make sure there's nothing in the DOM yet. @@ -922,7 +922,7 @@ void main() { ); hideKeyboard(); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('Multi-line mode also works', () { final MethodCall setClient = MethodCall( @@ -980,7 +980,7 @@ void main() { // Confirm that [HybridTextEditing] didn't send any more messages. expect(spy.messages, isEmpty); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('sets correct input type in Android', () { debugOperatingSystemOverride = OperatingSystem.android; diff --git a/lib/web_ui/test/text_test.dart b/lib/web_ui/test/text_test.dart index 6889e890faa70..28a02166da4bc 100644 --- a/lib/web_ui/test/text_test.dart +++ b/lib/web_ui/test/text_test.dart @@ -244,7 +244,7 @@ void main() async { expect(spans[0].style.fontFamily, 'Ahem, Arial, sans-serif'); // The nested span here should not set it's family to default sans-serif. expect(spans[1].style.fontFamily, 'Ahem, Arial, sans-serif'); - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('adds Arial and sans-serif as fallback fonts', () { // Set this to false so it doesn't default to 'Ahem' font. @@ -261,7 +261,7 @@ void main() async { expect(paragraph.paragraphElement.style.fontFamily, 'SomeFont, Arial, sans-serif'); debugEmulateFlutterTesterEnvironment = true; - }); + }, skip: (browserEngine == BrowserEngine.firefox)); test('does not add fallback fonts to generic families', () { // Set this to false so it doesn't default to 'Ahem' font. From d83f9ce35cb2a19f672981ee0be471aa8303ef45 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Mon, 9 Dec 2019 14:52:02 -0800 Subject: [PATCH 2/4] addressing PR comments --- .cirrus.yml | 2 +- lib/web_ui/dev/browser_lock.yaml | 2 +- lib/web_ui/dev/test_runner.dart | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 5da431d8287e9..3c1704595c788 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -76,7 +76,7 @@ task: cd $ENGINE_PATH/src/flutter/lib/web_ui $ENGINE_PATH/src/out/host_debug_unopt/dart-sdk/bin/pub get export FELT="$ENGINE_PATH/src/out/host_debug_unopt/dart-sdk/bin/dart dev/felt.dart" - $FELT test --browser=firefox --firefox-version=71.0 + $FELT test --browser=firefox - name: build_and_test_android_unopt_debug env: USE_ANDROID: "True" diff --git a/lib/web_ui/dev/browser_lock.yaml b/lib/web_ui/dev/browser_lock.yaml index c2da9e63e9fa3..6b0102d7567ea 100644 --- a/lib/web_ui/dev/browser_lock.yaml +++ b/lib/web_ui/dev/browser_lock.yaml @@ -4,4 +4,4 @@ chrome: Linux: 695653 Mac: 695656 firefox: - version: 69.0.3 + version: 71.0.0 diff --git a/lib/web_ui/dev/test_runner.dart b/lib/web_ui/dev/test_runner.dart index f240cfc200409..d21aa65fd2a70 100644 --- a/lib/web_ui/dev/test_runner.dart +++ b/lib/web_ui/dev/test_runner.dart @@ -123,8 +123,7 @@ class TestCommand extends Command { continue; } - if (isChrome && - path.split(testFilePath.relativeToWebUi).contains('golden_tests')) { + if (path.split(testFilePath.relativeToWebUi).contains('golden_tests')) { screenshotTestFiles.add(testFilePath); } else { unitTestFiles.add(testFilePath); From 148e3052bc428c2a77af483dbc4f141e763f0215 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Mon, 9 Dec 2019 15:41:35 -0800 Subject: [PATCH 3/4] addressing PR comments --- lib/web_ui/test/compositing_test.dart | 3 ++- lib/web_ui/test/dom_renderer_test.dart | 3 ++- .../engine/semantics/semantics_helper_test.dart | 5 +++-- .../test/engine/semantics/semantics_test.dart | 3 ++- lib/web_ui/test/paragraph_test.dart | 6 ++++-- lib/web_ui/test/text/font_collection_test.dart | 6 ++++-- lib/web_ui/test/text_editing_test.dart | 15 ++++++++++----- lib/web_ui/test/text_test.dart | 6 ++++-- 8 files changed, 31 insertions(+), 16 deletions(-) diff --git a/lib/web_ui/test/compositing_test.dart b/lib/web_ui/test/compositing_test.dart index e2496c2be8136..377d32bf7d056 100644 --- a/lib/web_ui/test/compositing_test.dart +++ b/lib/web_ui/test/compositing_test.dart @@ -173,7 +173,8 @@ void main() { expect(picture.buildCount, 1); expect(picture.updateCount, 0); expect(picture.applyPaintCount, 2); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); }); } diff --git a/lib/web_ui/test/dom_renderer_test.dart b/lib/web_ui/test/dom_renderer_test.dart index cbaed44a273a1..3fa1c678f0322 100644 --- a/lib/web_ui/test/dom_renderer_test.dart +++ b/lib/web_ui/test/dom_renderer_test.dart @@ -115,7 +115,8 @@ void main() { final DomRenderer renderer = DomRenderer(); renderer.reset(); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('accesibility placeholder is attached after creation', () { DomRenderer(); diff --git a/lib/web_ui/test/engine/semantics/semantics_helper_test.dart b/lib/web_ui/test/engine/semantics/semantics_helper_test.dart index 355294c4b499b..5aa8bc4f75c0f 100644 --- a/lib/web_ui/test/engine/semantics/semantics_helper_test.dart +++ b/lib/web_ui/test/engine/semantics/semantics_helper_test.dart @@ -21,7 +21,7 @@ void main() { if (_placeholder != null) { _placeholder.remove(); } - if(desktopSemanticsEnabler?.semanticsActivationTimer != null) { + if (desktopSemanticsEnabler?.semanticsActivationTimer != null) { desktopSemanticsEnabler.semanticsActivationTimer.cancel(); desktopSemanticsEnabler.semanticsActivationTimer = null; } @@ -142,6 +142,7 @@ void main() { mobileSemanticsEnabler.tryEnableSemantics(event); expect(shouldForwardToFramework, true); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); }); } diff --git a/lib/web_ui/test/engine/semantics/semantics_test.dart b/lib/web_ui/test/engine/semantics/semantics_test.dart index 40ceac4c01204..e5a979301c4da 100644 --- a/lib/web_ui/test/engine/semantics/semantics_test.dart +++ b/lib/web_ui/test/engine/semantics/semantics_test.dart @@ -806,7 +806,8 @@ void _testTextField() { expect(await logger.actionLog.first, ui.SemanticsAction.tap); semantics().semanticsEnabled = false; - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); } void _testCheckables() { diff --git a/lib/web_ui/test/paragraph_test.dart b/lib/web_ui/test/paragraph_test.dart index c9840962e1354..dba932d6b3f8e 100644 --- a/lib/web_ui/test/paragraph_test.dart +++ b/lib/web_ui/test/paragraph_test.dart @@ -104,7 +104,8 @@ void main() async { expect(paragraph.minIntrinsicWidth, fontSize * 10.0); expect(paragraph.maxIntrinsicWidth, fontSize * 10.0); } - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); testEachMeasurement('predictably lays out a multi-line rich paragraph', () { for (double fontSize in [10.0, 20.0, 30.0, 40.0]) { @@ -126,7 +127,8 @@ void main() async { expect(paragraph.minIntrinsicWidth, fontSize * 5.0); expect(paragraph.maxIntrinsicWidth, fontSize * 16.0); } - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); testEachMeasurement('getBoxesForRange returns a box', () { final ParagraphBuilder builder = ParagraphBuilder(ParagraphStyle( diff --git a/lib/web_ui/test/text/font_collection_test.dart b/lib/web_ui/test/text/font_collection_test.dart index f99fdd3dc232a..6581e4aae4be6 100644 --- a/lib/web_ui/test/text/font_collection_test.dart +++ b/lib/web_ui/test/text/font_collection_test.dart @@ -118,7 +118,8 @@ void main() { expect(fontFamilyList.length, equals(2)); expect(fontFamilyList, contains('\'Ahem ,ahem\'')); expect(fontFamilyList, contains('Ahem ,ahem')); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('Register Asset twice with a digit at the start of a token', () async { final String testFontFamily = 'Ahem 1998'; @@ -136,5 +137,6 @@ void main() { expect(fontFamilyList, contains('Ahem 1998')); expect(fontFamilyList, contains('\'Ahem 1998\'')); }); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); } diff --git a/lib/web_ui/test/text_editing_test.dart b/lib/web_ui/test/text_editing_test.dart index 5f63bdd090b1d..621747353486b 100644 --- a/lib/web_ui/test/text_editing_test.dart +++ b/lib/web_ui/test/text_editing_test.dart @@ -186,7 +186,8 @@ void main() { // There should be no input action. expect(lastInputAction, isNull); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('Can set editing state correctly', () { editingElement.enable( @@ -217,7 +218,8 @@ void main() { // There should be no input action. expect(lastInputAction, isNull); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('Multi-line mode also works', () { // The textarea element is created lazily. @@ -262,7 +264,8 @@ void main() { // There should be no input action. expect(lastInputAction, isNull); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('Same instance can be re-enabled with different config', () { // Make sure there's nothing in the DOM yet. @@ -922,7 +925,8 @@ void main() { ); hideKeyboard(); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('Multi-line mode also works', () { final MethodCall setClient = MethodCall( @@ -980,7 +984,8 @@ void main() { // Confirm that [HybridTextEditing] didn't send any more messages. expect(spy.messages, isEmpty); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('sets correct input type in Android', () { debugOperatingSystemOverride = OperatingSystem.android; diff --git a/lib/web_ui/test/text_test.dart b/lib/web_ui/test/text_test.dart index 28a02166da4bc..13bca16e9dd14 100644 --- a/lib/web_ui/test/text_test.dart +++ b/lib/web_ui/test/text_test.dart @@ -244,7 +244,8 @@ void main() async { expect(spans[0].style.fontFamily, 'Ahem, Arial, sans-serif'); // The nested span here should not set it's family to default sans-serif. expect(spans[1].style.fontFamily, 'Ahem, Arial, sans-serif'); - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('adds Arial and sans-serif as fallback fonts', () { // Set this to false so it doesn't default to 'Ahem' font. @@ -261,7 +262,8 @@ void main() async { expect(paragraph.paragraphElement.style.fontFamily, 'SomeFont, Arial, sans-serif'); debugEmulateFlutterTesterEnvironment = true; - }, skip: (browserEngine == BrowserEngine.firefox)); + }, // TODO(nurhan): https://github.com/flutter/flutter/issues/46638 + skip: (browserEngine == BrowserEngine.firefox)); test('does not add fallback fonts to generic families', () { // Set this to false so it doesn't default to 'Ahem' font. From ee34c5102089e18866657d70dd0edb665539a875 Mon Sep 17 00:00:00 2001 From: Nurhan Turgut Date: Mon, 9 Dec 2019 15:50:50 -0800 Subject: [PATCH 4/4] fix the version name on the lock file --- lib/web_ui/dev/browser_lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web_ui/dev/browser_lock.yaml b/lib/web_ui/dev/browser_lock.yaml index 6b0102d7567ea..169220c34f9b7 100644 --- a/lib/web_ui/dev/browser_lock.yaml +++ b/lib/web_ui/dev/browser_lock.yaml @@ -4,4 +4,4 @@ chrome: Linux: 695653 Mac: 695656 firefox: - version: 71.0.0 + version: '71.0'