I also think we should do 2-way sync-ing of WPT tests, similarly to other 
browser engines. These tests are extremely useful for interoperability. Every 
major browser engine is involved.

Google also has a nice dashboard showing the pass rates for each WPT test in 
each major browser. It makes it easier to identify areas we should improve on.

I - for one - would be happy to write tests using testharness.js when it makes 
sense if it means I can just land them in WebKit with my code change and have 
them being automagically upstreamed, and run by other browsers as well.

Note that I am not advocating we use testharness.js for everything (although I 
would be OK with this). I propose we make it opt-in. We have a lot of tests 
that are not necessarily interesting to upstream. However, the ones that are, 
using testharness.js makes a lot of sense.

Chris Dumez

> On Feb 5, 2017, at 5:04 PM, youenn fablet <youe...@gmail.com> wrote:
> 
> I too am a big proponent of us moving more and more towards WPT.
> As part of the streams and fetch API implementation, most of the related 
> functional tests have been made as WPT.
> The benefits of having tests being improved and updated largely outweighs the 
> testharness.js initial cost.
> Somehow, these tests are becoming part of their related specs.
> 
> The two complaints I heard against testharness.js are:
> - They are less easy to debug as test harness.js does not print out messages 
> for each assert. There might be room for updating testharness to support that
> - Async tests are less easy to write. While this is probably true, 
> testharness has support for promise-based tests which are not verbose.
> WPT has also some benefits of its own, like the possibility to run easily the 
> same tests in worker/window environments, the flexible python-based server...
> 
> One complaint I heard against WPT tests is that they require being run behind 
> a server.
> This is becoming more and more true. 
> There is still a large portion of tests that could be run locally if we 
> update the paths to test harness.js/testharnessreport,js.
> I am not a big fan of modify any WPT test but maybe we should consider 
> switching back to modifying these paths at import and export time.
> 
> I would also like to go in a direction where writing WPT tests is the default 
> for WebKit layout test.
> For that to happen, we need an easy way to upstream tests from WebKit to WPT 
> GitHub.
> 
> I would tend to do the following:
> - Write/submit WPT tests in WebKit as regular WebKit testharness.js layout 
> tests through bugzilla
> - At commit queue time, automatically create a PR to WPT GitHub containing 
> the changes of the WebKit patch
> - Ask committer to fix the WPT PR should there be any issue with it 
> (committer being informed of such issues through bugzilla).
> 
>> Le dim. 5 févr. 2017 à 15:42, Ryosuke Niwa <rn...@webkit.org> a écrit :
>> Hi all,
>> 
>> Background
>> 
>> Web Platform Tests is a suite of tests written for W3C specifications=,
>> and Blink, Edge, Gecko, and WebKit all run them as a part of their 
>> continuous build system.
>> 
>> Historically, each working group had their own repository for tests,
>> but with CSS WG's tests finally getting merged into the Web Platform Tests,
>> we will have a single repository with all the tests from W3C.
>> 
>> A few of us attended a meeting to discuss the future of this test suite last 
>> Monday.
>> One of the major topic was that Blink and Gecko have adopted the process to 
>> write the tests
>> using testharness.js in their own test suites, and automatically merge into 
>> Web Platform Tests
>> without having to go through another round of code review for Web Platform 
>> Tests.
>> 
>> Given we do test-driven development in WebKit, I think WebKit should do the 
>> same.
>> This will benefit other browser vendors to catch their bugs with our tests, 
>> and we will also benefit
>> from other browser vendors "reviewing" our tests against their 
>> implementation and specifications.
>> 
>> In the long term, I believe this will drastically improve the 
>> interoperability of the Web,
>> and dramatically improve the quality of the tests we run against WebKit.
>> 
>> In fact, there was a general consensus that we should even upstream 
>> pass-if-not-crash tests
>> as well as style and layout invalidation tests to web-platform-tests as they 
>> tend to be undertested
>> right now and almost all engines have bugs in this area.
>> 
>> Problems & Questions
>> 
>> In order to auto-merge tests from WebKit to Web Platform Tests, there are a 
>> few problems.
>> 
>> 1. We need to start writing more if not all tests using testharness.js 
>> instead of our own js-test(-pre).js
>> 
>> I've heard of many complaints about testharness.js being too verbose and 
>> cumbersome to use.
>> I agree with all those complaints but I don't think we can convince all 
>> other browser vendors
>> to use our own testing script either since both Blink & Gecko are onboard 
>> with using testharness.js
>> 
>> At this point, I'd argue that the benefit outweighs the cost of adopting 
>> testharness.js.
>> Also, W3C have dropped many styling requirements for tests so we no longer 
>> need to have
>> link/meta elements, etc... You simply include testharness.js and 
>> testharness-report.js.
>> 
>> See my recent PR for example.
>> 
>> Do people still object to using testharness.js? If so, what are your reasons?
>> 
>> 
>> 2. Where should we put upstremable tests?
>> 
>> We need a mechanism to identify & merge tests back from WebKit into Web 
>> Platform Tests.
>> 
>> One way to do this is to start adding tests directly into 
>> LayoutTests/imported/w3c/web-platform-tests
>> and then automatically identify those tests and upstream them.
>> 
>> Assuming all upstream merges happen in timely happen, this should work fine.
>> And it has a benefit that you get to see all related tests in one place.
>> 
>> Another approach is to create another top-level directory like 
>> LayoutTests/exports/web-platform-tests.
>> One downside of this approach is that we need to match the directory 
>> structure
>> in order for any script to upstream tests to appropriate locations.
>> 
>> Do people prefer one approach over another? Or have another idea?
>> 
>> 
>> 3. What would be the process for upstreaming tests?
>> 
>> One possible approach is to create a PR request for every patch posted on 
>> Bugzilla
>> with tests that can be merged into Web Platform Tests.
>> 
>> Because we don't want to make Web Platform Tests less reliably,
>> every PR request to Web Platform Tests go through Travis CI
>> which runs the test hundreds of times to make sure it's not flaky.
>> 
>> This Travis CI job (stability check) will then show up as an additional EWS 
>> bubble.
>> 
>> 
>> Another approach is to wait until a patch is landed, and automatically 
>> create a PR
>> for tests that can be upstream'ed. This has a downside that the stability 
>> check
>> wouldn't run until the patch is landed, and it's unclear what happens they 
>> do fail.
>> 
>> Do committers get emails about them? Do the patches then need to be rolled 
>> back?
>> If we don't come up with an appropriate process, we can end up with a lot of
>> broken PRs that never get fixed like those failing test expectations :(
>> 
>> 
>> Again, do you prefer one or the other? Or do you have another proposal?
>> 
>> - R. Niwa
>> 
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev@lists.webkit.org
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to