• Mike Wittman's avatar
    Revert "Make layout tests use default isolation (e.g. site-per-process on desktop)." · 80c67924
    Mike Wittman authored
    This reverts commit b2457b26.
    
    Reason for revert: suspected of causing assertion failure running merge_web_test_results.py in not_site_per_process_webkit_layout_tests
    
    https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Linux%20Tests%20%28dbg%29%281%29%2832%29/53956
    
    2018-11-02 10:44:57,220 - root: [INFO] Running with isolated arguments
    Traceback (most recent call last):
      File "/b/swarming/w/ir/cache/builder/src/third_party/blink/tools/merge_web_test_results.py", line 12, in <module>
        main(sys.argv[1:])
      File "/b/swarming/w/ir/cache/builder/src/third_party/blink/tools/blinkpy/web_tests/merge_results.py", line 775, in main
        assert args.positional
    AssertionError
    
    
    Original change's description:
    > Make layout tests use default isolation (e.g. site-per-process on desktop).
    > 
    > Summary
    > =======
    > 
    > This CL makes layout tests use the default site isolation from the
    > platform they are run on (instead of opting out of strict site isolation
    > via LayoutTestContentBrowserClient::ShouldEnableStrictSiteIsolation).
    > Additionally, on platforms where strict site isolation is enabled,
    > layout tests opt into slightly stricter isolation by enabling isolation
    > of same-site origins used by Web Platform Tests - this ensures that
    > features covered by WPT also get sufficient coverage of out-of-process
    > iframes (OOPIFs).
    > 
    > After this CL, expectations for tests that differ in behavior with and
    > without OOPIFs are being moved from
    > LayoutTests/FlagExpectations/site-per-process to:
    > - LayoutTests/VirtualTestSuites (virtual/not-site-per-process suite)
    > - LayoutTests/virtual/not-site-per-process/README.md
    > - LayoutTests/TestExpectations and LayoutTests/NeverFixTests
    >   ("Site Isolation failures" section)
    > 
    > 
    > Desirability
    > ============
    > 
    > The CL helps with the following:
    > 
    > - Focusing on testing the mode that is actually shipped to end users
    > - Helping ensure that newly developed features get site-per-process
    >   coverage without having to set up a separate step (i.e. it is
    >   sufficient to set-up a bot that runs layout tests with
    >   --enable-features=NewFeature without also having to have a separate
    >   test step for runing layout tests with *both*
    >   --enable-features=NewFeature *and* --site-per-process
    > 
    > This CL does *not* help with reducing requirements for CQ capacity,
    > because we need to maintain a separate
    > not_site_per_process_webkit_layout_tests step to make sure that tests
    > pass without isolation (which is the mode Chrome ships on Android).
    > Also note that layout test coverage on Android is very sparse - see
    > https://groups.google.com/a/chromium.org/d/topic/blink-dev/SOXhTYysYkE/discussion
    > 
    > 
    > Preserving test coverage
    > ========================
    > 
    > Most tests
    > ----------
    > 
    > The CL preserves covering most layout tests with and without OOPIFs, by
    > relying on the fact that CQ/waterfall run layout tests on both kinds of
    > platforms - ones that default to strict site isolation (desktop
    > platforms) and ones that default to no site isolation (Android).
    > 
    > 
    > Tests that used to be excluded FlagExpectations/site-per-process
    > ----------------------------------------------------------------
    > 
    > Around 40 tests fail when run in presence of OOPIFs.  Such tests are
    > disabled by this CL by moving test expectations from
    > FlagExpectations/site-per-process into the main TestExpectations file.
    > The CL preserves non-OOPIF test coverage provided by the disabled tests
    > by introducing virtual/not-site-per-process directory which runs all
    > such tests with site isolation disabled.  Using a virtual test suites
    > for preserving the test coverage relies on the ability to have separate
    > test expectations for these tests (i.e. relying on the fact that
    > disabling these tests in TestExpectations doesn't disable their
    > virtual/not-site-per-process equivalents).
    > 
    > Note that the CL keeps isolating "oopif.test" site even in
    > virtual/not-site-per-process suite.  This site should only be used by
    > tests that require an OOPIF.
    > 
    > 
    > Preserving site-per-process-specific test expectations
    > ------------------------------------------------------
    > 
    > Some tests have site-per-process-specific expectations:
    > - http/tests/inspector-protocol/network/security-info-on-response.js
    > - http/tests/inspector-protocol/network/raw-headers-for-protected-document.js
    > 
    > The tests above highlight that cross-origin cookies are not displayed in
    > site-per-process mode (a known regression tracked by
    > https://crbug.com/849483).  This CL preserves expectations and coverage
    > by shuffling things around:
    > - old, main expectation -> android expectation
    > - old, site-per-process expectation -> main expectation
    > 
    > 
    > There is one additional test with site-per-process-specific
    > expectations:
    > - external/wpt/dom/events/EventListener-addEventListener.sub.window.js
    > 
    > Unlike the other 2 tests, it seems less important to preserve exact test
    > expectations for the case when the test fails with Site Isolation.
    > Therefore this test is covered by virtual/not-site-per-process test
    > suite and an expectation for this test is added to the main
    > TestExpectations.
    > 
    > 
    > Lost test coverage
    > ------------------
    > 
    > Even with extra caution described above, some test coverage may be lost:
    > 
    > - Features covered by tests only on one kind of platform (e.g. disabled
    >   on Android) are at risk of losing OOPIF or non-OOPIF coverage.
    > 
    > - Before this CL, site-per-process was also applied to all other
    >   `virtual/...` test suites.  After this CL,
    >   `virtual/not-site-per-process` will not provide such coverage.
    > 
    > 
    > Cleaned up test expectations
    > ----------------------------
    > 
    > Some additional test expectations clean-up is done, while preserving
    > test coverage:
    > 
    > - The http/tests/perf/large-inlined-script.html test has been already
    >   present in `SlowTests` and therefore I didn't include this test in the
    >   new `virtual/not-site-per-process` suite.
    > 
    > - The http/tests/devtools/network/network-datareceived.js test was
    >   already marked as expecting a `[Failure]` in TestExpectations and
    >   therefore I didn't include this test in the new
    >   `virtual/not-site-per-process` suite.
    > 
    > - The http/tests/devtools/console-cross-origin-iframe-logging.js test
    >   was already marked as `[Timeout]` in the old TestExpectations but for
    >   Win only.  Since I can repro a timeout on Linux (with and without site
    >   isolation), I just extended the old expectation to all platforms and I
    >   didn't include this test in the new `virtual/not-site-per-process`
    >   suite.  I also removed the test from SlowTests (since timeouts in the
    >   test are not expected everywhere).
    > 
    > 
    > Bug: 870761
    > Change-Id: I74d8ac4ebee8f0402d449fda2cec46ba3b49cf64
    > Reviewed-on: https://chromium-review.googlesource.com/c/1302662
    > Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org>
    > Reviewed-by: Dirk Pranke <dpranke@chromium.org>
    > Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#604955}
    
    TBR=dpranke@chromium.org,alexmos@chromium.org,lukasza@chromium.org
    
    Change-Id: I54b6a36922bebfbc8a3f1467bc3d4807c2322604
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Bug: 870761
    Reviewed-on: https://chromium-review.googlesource.com/c/1315960Reviewed-by: default avatarMike Wittman <wittman@chromium.org>
    Commit-Queue: Mike Wittman <wittman@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#605039}
    80c67924
NeverFixTests 152 KB