LGTM3

On 12/13/23 11:04 AM, Rick Byers wrote:
LGTM2

+1 to raising the bar on test automation, but only in the cases where there aren't unreasonable burdens and there is clear significant test coverage value (i.e., not this specific case). Thanks for the analysis Evan and Philip!

On Wed, Dec 13, 2023 at 8:10 AM Philip Jägenstedt <[email protected]> wrote:

    Hi Evan,

    Thanks for looking into this, and for answering some of my
    questions off-list. To summarize, eviction is spec'd very loosely
    and a testdriver.js API could probably only be "evict everything"
    or "evict data in this bucket". Neither of those would test the
    interesting parts of how quota, expiry time and probably other
    signals are used to determine which buckets to evict. Bottom line,
    if we can't see a WebDriver endpoint that would poke at the right
    internals /in all browsers/, then it wouldn't be testing
    production code beyond what is already tested.

    It looks like get or expire a bucket
    <https://wicg.github.io/storage-buckets/#get-or-expire-a-bucket> could
    be tested using bucket.setExpires(), but AFAICT this isn't tested.

    So, LGTM1 to ship with added tests for bucket expiration.

    Best regards,
    Philip

    P.S. I disagree that testdriver.js should only be used in
    exceptional cases. Rather often there's a spec concept which is
    invoked by the user or under implementation-defined conditions,
    and it's straightforward to poke this concept with a WebDriver
    endpoint. https://fedidcg.github.io/FedCM/#automation is a good
    recent example. API owners don't insist on this currently mainly
    because testdriver.js needs to be implemented for both Chrome and
    content_shell. With wptrunner in Chromium CI (thanks @Weizhong Xia
    <mailto:[email protected]>!) I expect the need for double work
    will be removed, and I would like to raise the bar for test
    automation. (But even then there will be cases where it wouldn't
    be testing additional production code and isn't worthwhile.)

    On Thu, Dec 7, 2023 at 6:43 PM Evan Stade <[email protected]> wrote:

        Hi Philip,

        After conferring with the team, we feel that there is an
        appropriate distribution of coverage provided by WPT and
        Chromium unit and browser tests. Leveraging testdriver for
        one-off hooks such as this would introduce substantial
        test-only code flows, diminishing the confidence that the
        tests were correctly verifying production behavior, while also
        imposing a larger maintenance burden going forward. The
        benefit, as we understand it, would be that the WPT could be
        shared by other vendors, but the test itself in this case
        would only be a few lines. The vast majority of LOC would
        be plumbing and internals logic which other vendors would need
        to provide for themselves.

        Getting a bit off in the weeds relative to this i2s
        discussion, but I'll continue on this topic for the sake of
        debate:

        We can observe that new testdriver APIs are seldom added. I
        only see ~4 changes originating from the Chromium project in
        the last 5 years. Putting all other reasoning aside, this fact
        alone would suggest that testdriver should be touched only in
        exceptional cases. I would not argue that testdriver is
        without utility. Unlike the one-off actions we'd need for
        these buckets WPT, more generic testdriver actions such as
        setting permission state can enable a wide range of tests. In
        those cases the calculus of cost vs reward is much more
        favorable. So I would assume that changes to testdriver should
        meet a high bar of broad utility, similar to how we treat core
        libraries in //base/.

        Hope that addresses your concerns.

        -- Evan Stade


        On Fri, Dec 1, 2023 at 9:03 AM Philip Jägenstedt
        <[email protected]> wrote:

            Thanks Evan for listing out the tests, they were more
            spread out than I thought. Great to see more of the tests
            being upstreamed too!

            I wonder if we can do even better and test eviction
            however? Have you looked into defining a WebDriver
            endpoint for triggering eviction? It could make sense in
            https://web-platform-tests.org/writing-tests/testdriver.html#storage
            and there are plenty of examples in that documentation
            that might be close to the hook/trigger you need.

            If you think this is an unreasonable request, please push
            back, my interest is only that this can be implemented
            interoperably. Tests are our best way of ensuring that,
            but it's not the only way, and it's always a tradeoff of
            effort vs. utility.

            Best regards,
            Philip

            On Wed, Nov 29, 2023 at 6:32 PM Evan Stade
            <[email protected]> wrote:

                Hi Philip,

                Here is a comprehensive list of web tests that verify
                storageBuckets behavior. We do feel the size of this
                list aligns well with the spec, which is fairly
                concise. As you can see, some are spread out in
                directories for the other storage APIs that
                storageBuckets brokers.

                That said, not all behavior is verifiable from the
                web. For example, it's not possible to reliably
                trigger an automatic eviction event from the web, so
                we can't really know if `persisted` is /actually/
                respected. Browser tests provide that kind of coverage.

                Some of the WPT are internal but they can/should be
                moved
                
<https://chromium-review.googlesource.com/c/chromium/src/+/5072535>
                to the external WPT directory. Thanks for the prompt.

                external/wpt/IndexedDB/storage-buckets.https.any.js:
                external/wpt/fs/script-tests/FileSystemBaseHandle-buckets.js:
                
external/wpt/service-workers/cache-storage/cache-storage-buckets.https.any.js:
                
external/wpt/storage/buckets/bucket-quota-indexeddb.tentative.https.any.js:
                
external/wpt/storage/buckets/bucket-storage-policy.tentative.https.any.js:
                external/wpt/web-locks/storage-buckets.tentative.https.any.js:
                
http/tests/inspector-protocol/storage/cache-storage-request-cache-names.js:
                
http/tests/inspector-protocol/storage/cache-storage-storage-key-request-cache-names.js:
                
http/tests/inspector-protocol/storage/indexed-db-storage-key-clear.js:
                
http/tests/inspector-protocol/storage/indexed-db-storage-key-delete-db.js:
                
http/tests/inspector-protocol/storage/indexed-db-storage-key-delete-object-store-entries.js:
                
http/tests/inspector-protocol/storage/indexed-db-storage-key-get-metadata.js:
                
http/tests/inspector-protocol/storage/indexed-db-storage-key-request-data.js:
                
http/tests/inspector-protocol/storage/indexed-db-storage-key-request-database-names.js:
                
http/tests/inspector-protocol/storage/indexed-db-storage-key-request-database.js:
                
http/tests/inspector-protocol/storage/storage-bucket-storage-key-track-untrack.js:
                
http/tests/inspector-protocol/storage/storage-buckets-delete-storage-bucket.js:
                
wpt_internal/storage/buckets/bucket_names.tentative.https.any.js:
                
wpt_internal/storage/buckets/buckets_basic.tentative.https.any.js:
                
wpt_internal/storage/buckets/buckets_storage_policy.tentative.https.any.js:
                wpt_internal/storage/buckets/detached-iframe.https.html:
                wpt_internal/storage/buckets/idlharness-worker.https.any.js:
                wpt_internal/storage/buckets/opaque-origin.https.window.js:
                
wpt_internal/storage/buckets/resources/opaque-origin-sandbox.html:
                
wpt_internal/storage/buckets/storage_bucket_object.tentative.https.any.js:

                -- Evan Stade


                On Wed, Nov 29, 2023 at 9:02 AM Philip Jägenstedt
                <[email protected]> wrote:

                    Hi Evan,

                    Is
                    
https://wpt.fyi/results/storage/buckets?label=experimental&label=master&aligned
                    
<https://wpt.fyi/results/storage/buckets?label=experimental&label=master&aligned>
                    the full set of tests? Given the size of the spec,
                    does that cover the whole feature well?

                    Best regards,
                    Philip

                    On Wed, Nov 29, 2023 at 5:58 PM Evan Stade
                    <[email protected]> wrote:

                        [reply-all this time]

                        Hi Philip,

                        thanks for pointing out those two oversights.
                        I have fixed the checkboxes on the
                        chromestatus entry. It is in fact tested by
                        WPT and supported on all Blink platforms.

                        On Wed, Nov 29, 2023 at 8:43 AM Philip
                        Jägenstedt <[email protected]> wrote:

                            Hi Evan,

                            A few questions inline.

                            On Tue, Nov 14, 2023 at 9:38 PM Evan Stade
                            <[email protected]> wrote:



                                        Will this feature be supported
                                        on all six Blink platforms
                                        (Windows, Mac, Linux, Chrome
                                        OS, Android, and Android WebView)?

                                No


                            Which platform will this not be supported on?


                                        Is this feature fully tested
                                        by web-platform-tests
                                        
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?

                                No


                            Can this be fully tested in WPT? If it's
                            not tested in WPT, how is it currently tested?

                            Best regards,
                            Philip

-- You received this message because you are subscribed to the Google
    Groups "blink-dev" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected].
    To view this discussion on the web visit
    
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYfLUBkQCsJG4RYHSUqxLkN42NdMTRWAK817hofLU6CrPA%40mail.gmail.com
    
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYfLUBkQCsJG4RYHSUqxLkN42NdMTRWAK817hofLU6CrPA%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY-7zXke53y9TQ44fBtZBUG%2BvM701WT1FXfTBfeVUjS5cg%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY-7zXke53y9TQ44fBtZBUG%2BvM701WT1FXfTBfeVUjS5cg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/eb274beb-e2ec-4669-bbba-1354102bd147%40chromium.org.

Reply via email to