# Copyright (c) 2022, 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 ]
internal/deferred_url_test: SkipByDesign # test specific for the dart2js runtime

[ $compiler == dart2wasm ]
(?!wasm)*: SkipByDesign

[ $compiler != dart2wasm ]
wasm/*: SkipByDesign

[ $compiler == ddc ]
async_stacktrace_test: Skip # Issue 53555
native/*: Skip # dart2js tests for native keyword
wasm_js_shared/weak_reference_polyfill_test: SkipByDesign # Test specific for the dart2js/dart2wasm runtime

[ $browser ]
native/*: Skip

[ $compiler == dart2js && $mode == debug ]
operator_test: Skip
string_interpolation_test: Skip

[ $compiler == dart2js && $runtime == chrome && $system == windows ]
closure_capture3_test: Slow, Pass # Issue 25940
closure_capture5_test: Slow, Pass # Issue 25940
conditional_test: Slow, Pass # Issue 25940
consistent_codeUnitAt_error_test: Slow, Pass # Issue 25940
constant_javascript_semantics2_test: Slow, Pass # Issue 25940
deferred_split_test: Slow, Pass # Issue 25940

[ $compiler == dart2js && $runtime == d8 ]
internal/object_members_test: SkipByDesign # Browser test

[ $compiler == dart2js && $runtime == ff && $system == windows ]
consistent_index_error_string_test: Slow, Pass # Issue 25940

[ $compiler == dart2js && $csp ]
deferred_fail_and_retry_test: SkipByDesign # Uses eval to simulate failed loading.
internal/object_members_test: SkipByDesign # Uses eval for interop
js_interop_non_null_asserts_disabled_test: SkipByDesign # Issue 42085. CSP policy disallows injected JS code
js_interop_non_null_asserts_enabled_test: SkipByDesign # Issue 42085. CSP policy disallows injected JS code
regress/issue/49129_test: SkipByDesign # Uses eval for interop

[ $compiler == dart2js && !$host_asserts ]
deferred/many_parts/many_parts_test: Slow, Pass # Large stress test by design

[ $compiler == dart2js && $minified ]
code_motion_exception_test: Skip # Requires unminified operator names.

[ $compiler == dart2js && ($runtime == ff || $runtime == jsshell || $runtime == safari) ]
code_motion_exception_test: Skip # Required V8 specific format of JavaScript errors.

[ $compiler == dartk && $runtime == vm ]
new_from_env_test: SkipByDesign # dart2js only test
unconditional_dartio_import_test: SkipByDesign # dart2js only test
