Closed Bug 1875246 Opened 2 years ago Closed 2 years ago

[wpt-sync] Sync PR 44067 - Add more Observable tests.

Categories

(Core :: DOM: Core & HTML, task, P4)

task

Tracking

()

RESOLVED FIXED
124 Branch
Tracking Status
firefox124 --- fixed

People

(Reporter: wpt-sync, Unassigned)

References

(Blocks 1 open bug, )

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 44067 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/44067
Details from upstream follow.

Keith Cirkel <chromium@keithcirkel.co.uk> wrote:

Add more Observable tests.

This change introduces the idl_test for shorthand testing of properties,
and adds some additional tests around the properties in flight:
asserting that readonly properties don't change, that flags are set
correctly, as well as some edge cases such as how it can be observed
that active is false before signal.aborted is true. These will
largely help early implementations in other areas (polyfills, browsers).

Bug: 1485981
Change-Id: I08f76b3d1bcf567a8991a19d9623d2e743a6e326
Reviewed-on: https://chromium-review.googlesource.com/5211031
WPT-Export-Revision: 9ffcdfcce21f71880e4ba05f6b6fc26b588feb0c

Component: web-platform-tests → DOM: Core & HTML
Product: Testing → Core
Whiteboard: [wptsync downstream] → [wptsync downstream error]
Whiteboard: [wptsync downstream error] → [wptsync downstream]

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 3 tests and 36 subtests

Status Summary

Firefox

OK : 3
PASS: 2
FAIL: 106

Chrome

OK : 3
PASS: 108

Safari

OK : 3
PASS: 2
FAIL: 106

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /dom/observable/tentative/idlharness.html [wpt.fyi]
    • Subscriber interface: existence and properties of interface object: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface object length: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface object name: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: existence and properties of interface prototype object: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: existence and properties of interface prototype object's "constructor" property: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: existence and properties of interface prototype object's @@unscopables property: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: operation next(any): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: operation error(any): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: operation complete(): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: operation addTeardown(VoidFunction): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: attribute active: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: attribute signal: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber must be primary interface of (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })(): FAIL (Chrome: PASS, Safari: FAIL)
    • Stringification of (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })(): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() must inherit property "next(any)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: calling next(any) on (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() must inherit property "error(any)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: calling error(any) on (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() must inherit property "complete()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() must inherit property "addTeardown(VoidFunction)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: calling addTeardown(VoidFunction) on (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() must inherit property "active" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface: (() => { let s = null; new Observable(_s => s = _s).subscribe({}); return s })() must inherit property "signal" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface: existence and properties of interface object: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface object length: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface object name: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface: existence and properties of interface prototype object: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface: existence and properties of interface prototype object's "constructor" property: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface: existence and properties of interface prototype object's @@unscopables property: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface: operation subscribe(optional ObserverUnion, optional SubscribeOptions): FAIL (Chrome: PASS, Safari: FAIL)
    • Observable must be primary interface of new Observable(() => {}): FAIL (Chrome: PASS, Safari: FAIL)
    • Stringification of new Observable(() => {}): FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface: new Observable(() => {}) must inherit property "subscribe(optional ObserverUnion, optional SubscribeOptions)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable interface: calling subscribe(optional ObserverUnion, optional SubscribeOptions) on new Observable(() => {}) with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
  • /dom/observable/tentative/observable-constructor.any.html [wpt.fyi]
    • Observable constructor: FAIL (Chrome: PASS, Safari: FAIL)
    • subscribe() can be called with no arguments: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface is not constructible: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscribe with just a function as the next handler: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable constructor calls initializer on subscribe: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable error path called synchronously: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber must have receiver: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber next & error must recieve argument: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber complete() will set active to false, and abort signal: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber active is readonly: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber signal is readonly: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable should error if initializer throws: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription is inactive after complete(): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription is inactive after error(): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription is inactive when aborted signal is passed in: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber#signal is not the same AbortSignal as the one passed into subscribe(): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription does not emit values after completion: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription does not emit values after error: FAIL (Chrome: PASS, Safari: FAIL)
    • Completing or nexting a subscriber after an error does nothing: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors pushed to the subscriber that are not handled by the subscription are reported to the global: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors thrown in the initializer that are not handled by the subscription are reported to the global: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription reports errors that are pushed after subscriber is closed by completion: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors thrown by initializer function after subscriber is closed by completion are reported: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors thrown by initializer function after subscriber is closed by error are reported: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors pushed by initializer function after subscriber is closed by error are reported: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber#complete() cannot re-entrantly invoke itself: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber#error() cannot re-entrantly invoke itself: FAIL (Chrome: PASS, Safari: FAIL)
    • Unsubscription lifecycle: FAIL (Chrome: PASS, Safari: FAIL)
    • Aborting a subscription should stop emitting values: FAIL (Chrome: PASS, Safari: FAIL)
    • Calling subscribe should never throw an error synchronously, initializer throws error: FAIL (Chrome: PASS, Safari: FAIL)
    • Calling subscribe should never throw an error synchronously, subscriber pushes error: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardown should be called when subscription is aborted: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardowns should be called when subscription is closed by completion: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardowns should be called when subscription is closed by subscriber pushing an error: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardowns should be called when subscription is closed by subscriber throwing error: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardowns should be called synchronously during addTeardown() if the subscription is inactive: FAIL (Chrome: PASS, Safari: FAIL)
  • /dom/observable/tentative/observable-constructor.any.worker.html [wpt.fyi]
    • Observable constructor: FAIL (Chrome: PASS, Safari: FAIL)
    • subscribe() can be called with no arguments: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber interface is not constructible: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscribe with just a function as the next handler: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable constructor calls initializer on subscribe: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable error path called synchronously: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber must have receiver: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber next & error must recieve argument: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber complete() will set active to false, and abort signal: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber active is readonly: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber signal is readonly: FAIL (Chrome: PASS, Safari: FAIL)
    • Observable should error if initializer throws: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription is inactive after complete(): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription is inactive after error(): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription is inactive when aborted signal is passed in: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber#signal is not the same AbortSignal as the one passed into subscribe(): FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription does not emit values after completion: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription does not emit values after error: FAIL (Chrome: PASS, Safari: FAIL)
    • Completing or nexting a subscriber after an error does nothing: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors pushed to the subscriber that are not handled by the subscription are reported to the global: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors thrown in the initializer that are not handled by the subscription are reported to the global: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscription reports errors that are pushed after subscriber is closed by completion: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors thrown by initializer function after subscriber is closed by completion are reported: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors thrown by initializer function after subscriber is closed by error are reported: FAIL (Chrome: PASS, Safari: FAIL)
    • Errors pushed by initializer function after subscriber is closed by error are reported: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber#complete() cannot re-entrantly invoke itself: FAIL (Chrome: PASS, Safari: FAIL)
    • Subscriber#error() cannot re-entrantly invoke itself: FAIL (Chrome: PASS, Safari: FAIL)
    • Unsubscription lifecycle: FAIL (Chrome: PASS, Safari: FAIL)
    • Aborting a subscription should stop emitting values: FAIL (Chrome: PASS, Safari: FAIL)
    • Calling subscribe should never throw an error synchronously, initializer throws error: FAIL (Chrome: PASS, Safari: FAIL)
    • Calling subscribe should never throw an error synchronously, subscriber pushes error: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardown should be called when subscription is aborted: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardowns should be called when subscription is closed by completion: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardowns should be called when subscription is closed by subscriber pushing an error: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardowns should be called when subscription is closed by subscriber throwing error: FAIL (Chrome: PASS, Safari: FAIL)
    • Teardowns should be called synchronously during addTeardown() if the subscription is inactive: FAIL (Chrome: PASS, Safari: FAIL)
Pushed by wptsync@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/89bd201a0907 [wpt PR 44067] - Add more Observable tests., a=testonly https://hg.mozilla.org/integration/autoland/rev/6ae6b80de053 [wpt PR 44067] - Update wpt metadata, a=testonly
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 124 Branch
You need to log in before you can comment on or make changes to this bug.