# Copyright (c) 2014, 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.

web/incremental_compilation_update_test: Slow, RuntimeError # issue 23197

[ $runtime == ie10 || $runtime == ie9 || $runtime == vm || $jscl ]
web/*: Skip

[ $compiler == dart2js && $runtime == drt ]
web/end_to_end_test: Fail, Pass # https://code.google.com/p/v8/issues/detail?id=3347

[ $compiler == none && $runtime == drt ]
web/end_to_end_test: Fail # Issue 24568

[ $csp ]
web/end_to_end_test: Fail, OK # Issue 17935
web/incremental_compilation_update_test: SkipByDesign # Test uses eval, not supported in CSP mode.

[ $runtime == safari || $runtime == safarimobilesim ]
web/cursor_position_test: Fail # Issue 19836
web/incremental_compilation_update_test: Skip # Safari may crash on this test.

[ $runtime == safari && $checked ]
# The following tests flake with this error:
#   type '*Theme' is not a subtype of type 'Theme'
# Suspect this is a bad optimization.
web/source_update_test: Fail, Pass
web/paste_content_rewriting_test: Fail, Pass

[ $runtime == safarimobilesim ]
web/end_to_end_test: Skip # Issue 21608

[ $browser ]
poi/poi_test: SkipByDesign # Uses dart:io.
poi/poi_find_test: SkipByDesign # Uses dart:io.
poi/serialize_test: SkipByDesign # Uses dart:io.

[ $compiler == dart2js ]
poi/*: Skip # Issue 20031

[ $compiler == dart2js ]
# Compilation is slow, test fails at runtime due to time out, but
# unpredictably.
web/incremental_compilation_update_test: Skip
