# Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

[ $compiler == dart2js && $runtime == jsshell ]
async/catch_errors12_test: Fail # Timer interface not supported: Issue 7728.
async/catch_errors13_test: Fail # Timer interface not supported: Issue 7728.
async/catch_errors14_test: Fail # Timer interface not supported: Issue 7728.
async/catch_errors15_test: Fail # Timer interface not supported: Issue 7728.
async/catch_errors8_test: Fail # Timer interface not supported: Issue 7728.
async/catch_errors22_test: RuntimeError # Timer interface not supported: Issue 7728.
async/catch_errors18_test: Fail # Timer interface not supported: Issue 7728.
async/catch_errors19_test: Fail # Timer interface not supported: Issue 7728.
async/catch_errors20_test: Fail # Timer interface not supported: Issue 7728.
async/catch_errors28_test: Fail # Timer interface not supported: Issue 7728.
async/future_test: RuntimeError # Timer interface not supported; Issue 7728.
async/future_constructor2_test: Fail # Timer interface not supported: Issue 7728.
async/multiple_timer_test: RuntimeError,OK # Needs Timer to run.
async/slow_consumer2_test: RuntimeError # Timer interface not supported; Issue 7728.
async/slow_consumer3_test: RuntimeError # Timer interface not supported; Issue 7728.
async/slow_consumer_test: RuntimeError # Timer interface not supported; Issue 7728.
async/run_zoned7_test: RuntimeError # Timer interface not supported: Issue 7728.
async/run_zoned8_test: Fail # Timer interface not supported: Issue 7728.
async/schedule_microtask_test: Fail  # Preamble file does not correctly implement scheduleImmediate.
async/schedule_microtask3_test: RuntimeError
async/stream_controller_test: Fail # Timer interface not supported: Issue 7728.
async/stream_take_test: Fail # Timer interface not supported: Issue 7728.
async/zone_empty_description2_test: RuntimeError # Timer interface not supported: Issue 7728.
async/zone_create_timer2_test: RuntimeError # Timer interface not supported: Issue 7728.
async/zone_create_periodic_timer_test: RuntimeError # Timer interface not supported: Issue 7728.
async/zone_bind_test: Fail # Timer interface not supported: Issue 7728.

[ $compiler == dart2js ]
async/future_or_strong_test: RuntimeError
convert/base64_test/01: Fail, OK # Uses bit-wise operations to detect invalid values. Some large invalid values accepted by dart2js.
convert/chunked_conversion_utf88_test: Slow, Pass
convert/utf85_test: Slow, Pass
html/custom/document_register_type_extensions_test/construction: Pass, Timeout # Roll 50 failure
html/custom/document_register_type_extensions_test/registration: Pass, Timeout # Roll 50 failure
html/custom/entered_left_view_test/shadow_dom: Pass, Timeout # Roll 50 failure
isolate/issue_21398_parent_isolate_test: SkipByDesign # Test uses a ".dart" URI.
isolate/issue_21398_parent_isolate1_test: SkipByDesign # Test uses a ".dart" URI.
isolate/issue_21398_parent_isolate2_test: SkipByDesign # Test uses a ".dart" URI.
isolate/function_send1_test: SkipByDesign   # Test uses a ".dart" URI.
isolate/error_exit_at_spawnuri_test: SkipByDesign  # Test uses a ".dart" URI.
isolate/error_at_spawnuri_test: SkipByDesign  # Test uses a ".dart" URI.
isolate/exit_at_spawnuri_test: SkipByDesign  # Test uses a ".dart" URI.
isolate/enum_const_test/02: RuntimeError # Issue 21817
math/double_pow_test: RuntimeError
math/low_test: RuntimeError
math/random_big_test: RuntimeError  # Using bigint seeds for random.
mirrors/*: SkipByDesign # Mirrors not supported on web in Dart 2.0.
typed_data/typed_data_hierarchy_int64_test: RuntimeError # Issue 10275
typed_data/int32x4_bigint_test: RuntimeError # Issue 1533
typed_data/int64_list_load_store_test: RuntimeError # Issue 10275

[ $compiler == dart2js ]
async/future_or_strong_test: RuntimeError
mirrors/*: SkipByDesign # Mirrors not supported on web in Dart 2.0.
profiler/metrics_num_test: Skip # Because of an int / double type test.

[ $compiler != dart2js ]
async/dart2js_uncaught_error_test: Skip  # JS-integration only test

[ $compiler == dart2js && $checked ]
convert/utf85_test: Pass, Slow # Issue 12029.

[ $compiler == dart2js && $runtime == chromeOnAndroid ]
html/canvasrenderingcontext2d_test/drawImage_video_element: Fail # TODO(dart2js-team): Please triage this failure.
html/canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Fail # TODO(dart2js-team): Please triage this failure.
html/canvasrenderingcontext2d_test/fillText: Fail # TODO(dart2js-team): Please triage this failure.
isolate/isolate_stress_test: Pass, Slow # TODO(kasperl): Please triage.
typed_data/setRange_2_test: RuntimeError # TODO(dart2js-team): Please triage this failure.
typed_data/setRange_3_test: RuntimeError # TODO(dart2js-team): Please triage this failure.

[ $compiler == dart2js && ( $runtime == chrome || $runtime == ff ) ]
async/slow_consumer2_test: SkipSlow # Times out. Issue 22050
convert/streamed_conversion_utf8_decode_test: SkipSlow # Times out. Issue 22050
convert/streamed_conversion_json_utf8_encode_test: SkipSlow # Times out. Issue 22050
convert/streamed_conversion_json_utf8_decode_test: SkipSlow # Times out. Issue 22050

[ $compiler == dart2js && $runtime != d8 ]
isolate/error_exit_at_spawn_test: Skip # Issue 23876
isolate/error_at_spawn_test: Skip # Issue 23876
isolate/exit_at_spawn_test: Skip # Issue 23876

[ ($compiler == dart2js && $fast_startup) ]
isolate/illegal_msg_mirror_test: Fail # mirrors not supported

[ $compiler == dart2js && $fast_startup && ! $browser ]
isolate/isolate_current_test: Fail  # please triage

[ $compiler == dart2js && ( $runtime == ff || $runtime == safari || $runtime == drt || $runtime == chrome || $runtime == chromeOnAndroid) ]
isolate/isolate_stress_test: Pass, Slow # Issue 10697

[ $compiler == dart2js && ($runtime == drt || $runtime == ie11) ]
math/math_test: RuntimeError
math/math2_test: RuntimeError

[ $compiler == dart2js && ($runtime != jsshell && $runtime != d8) ]
js/null_test: RuntimeError # Issue 30652

[ $compiler == dart2js && $csp && $browser ]
html/custom/element_upgrade_test: Fail # Issue 17298
html/custom/js_custom_test: Fail # Issue 14643

[ $compiler == dart2js && ($runtime == safari || $runtime == safarimobilesim || $runtime == ff  || $ie) ]
html/custom/entered_left_view_test/viewless_document: Fail # Polyfill does not handle this

[ $compiler == dart2js && $fast_startup ]
html/custom/js_custom_test: Fail # mirrors not supported
html/custom/mirrors_test: Fail # mirrors not supported
html/custom/mirrors_2_test: Fail # mirrors not supported
