Migrate content integration AccessFu tests to junit Accessibility tests.

ASSIGNED
Assigned to

Status

()

enhancement
P3
normal
ASSIGNED
Last year
Last year

People

(Reporter: yzen, Assigned: yzen)

Tracking

(Blocks 1 bug, {access, meta})

Trunk
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox-esr52 wontfix, firefox-esr60 wontfix, firefox61 wontfix, firefox62 affected, firefox63 affected)

Details

(Whiteboard: [geckoview:p2])

Attachments

(2 attachments, 3 obsolete attachments)

We'd like to move JSAT content integration tests to junit tests that test GeckoView accessibility integration.

We would like to move and tests most of the existing integration tests including (but not limited to) tests for:

- scrolling via focus and action
- vc navigation triggered by tree mutations (e.g. dismissed dialogs etc)
- checkboxes
- button activations
- ranges
- navigation
Priority: -- → P3
Attachment #8992398 - Flags: review?(nchen)
Attachment #8992398 - Flags: review?(eitan)
Keywords: leave-open
Comment on attachment 8992398 [details] [diff] [review]
1473690 checkboxes

Review of attachment 8992398 [details] [diff] [review]:
-----------------------------------------------------------------

Looks good! ..with the comments below.

::: accessible/jsat/ContentControl.jsm
@@ +222,5 @@
>            node.dispatchEvent(evt);
>          }
>        }
>  
> +      if (!Utils.isActivatableOnFingerUp(aAccessible) &&

This is a b2g relic. Can you please remove this and the utility function?

::: accessible/jsat/EventManager.jsm
@@ +145,5 @@
>            QueryInterface(Ci.nsIAccessibleVirtualCursorChangeEvent);
>          let reason = event.reason;
>          let oldAccessible = event.oldAccessible;
>  
> +        if (position && !Utils.getState(position).contains(States.FOCUSED)) {

How about (!position || !Utils.getState(position).contains(States.FOCUSED))

It really should blur if there is no position too.

::: mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/AccessibilityTest.kt
@@ +193,5 @@
> +            @AssertCalled(count = 1)
> +            override fun onAccessibilityFocused(event: AccessibilityEvent) {
> +                nodeId = getSourceId(event)
> +                var node = provider.createAccessibilityNodeInfo(nodeId)
> +                assertThat("Checkbox node is not checked", node.isCheckable, equalTo(true))

"Checkbox node is checkable"

@@ +194,5 @@
> +            override fun onAccessibilityFocused(event: AccessibilityEvent) {
> +                nodeId = getSourceId(event)
> +                var node = provider.createAccessibilityNodeInfo(nodeId)
> +                assertThat("Checkbox node is not checked", node.isCheckable, equalTo(true))
> +                assertThat("Checkbox node is not checked", node.isClickable, equalTo(true))

"Checkbox node is clickable"

@@ +195,5 @@
> +                nodeId = getSourceId(event)
> +                var node = provider.createAccessibilityNodeInfo(nodeId)
> +                assertThat("Checkbox node is not checked", node.isCheckable, equalTo(true))
> +                assertThat("Checkbox node is not checked", node.isClickable, equalTo(true))
> +                assertThat("Checkbox node is not checked", node.isFocusable, equalTo(true))

"Checkbox node is focusable"

@@ +197,5 @@
> +                assertThat("Checkbox node is not checked", node.isCheckable, equalTo(true))
> +                assertThat("Checkbox node is not checked", node.isClickable, equalTo(true))
> +                assertThat("Checkbox node is not checked", node.isFocusable, equalTo(true))
> +                assertThat("Checkbox node is not checked", node.isChecked, equalTo(false))
> +                assertThat("Checkbox node has correct role", node.text.toString(), equalTo("many option check button"))

I would remove this assert since it is checking an utterance that will be removed in the future. We will need to remember to add proper role (className/roleDescription) tests here when they are added.

::: mobile/android/geckoview/src/main/java/org/mozilla/geckoview/SessionAccessibility.java
@@ +407,5 @@
>          node.setBoundsInParent(screenBounds);
>      }
>  
> +    private void updateState(final AccessibilityNodeInfo node, final GeckoBundle message) {
> +        if (message.containsKey("checked")) {

what about "selected" state? Shouldn't we have a similar case for that too? That could be a followup, I guess.
Attachment #8992398 - Flags: review?(eitan) → review+
Attachment #8992398 - Flags: review?(nchen) → review+
Posted patch 1473690 selectable (obsolete) — Splinter Review
Attachment #8993093 - Flags: review?(nchen)
Attachment #8993093 - Flags: review?(eitan)
Posted patch 1473690 selectable v2 (obsolete) — Splinter Review
Updated the test
Attachment #8993093 - Attachment is obsolete: true
Attachment #8993093 - Flags: review?(nchen)
Attachment #8993093 - Flags: review?(eitan)
Attachment #8993452 - Flags: review?(nchen)
Attachment #8993452 - Flags: review?(eitan)
Comment on attachment 8993452 [details] [diff] [review]
1473690 selectable v2

Review of attachment 8993452 [details] [diff] [review]:
-----------------------------------------------------------------

I thought we didn't need to mess with any ARIA states, and a focused role=option would be good enough. No? Otherwise looks good with the comments below.

::: accessible/jsat/EventManager.jsm
@@ +168,2 @@
>          if (state.contains(States.CHECKED)) {
> +          this.present(Presentation.checked(aEvent.accessible));

So you got rid of the strings? I think we may still need them. What does Chrome do?

@@ +170,3 @@
>          } else if (state.contains(States.SELECTED)) {
> +          this.present(Presentation.selected(aEvent.accessible,
> +                                             event.isEnabled ? "select" : "unselect"));

Is "select"/"unselect" the same string that Chrome sends? It should match. Same with "check"/"uncheck".

::: accessible/jsat/Presentation.jsm
@@ +305,5 @@
>        clickable: aContext.accessible.actionCount > 0,
>        checkable: state.contains(States.CHECKABLE),
>        checked: state.contains(States.CHECKED),
>        editable: state.contains(States.EDITABLE),
> +      selected: state.contains(States.SELECTED)

weird that they don't have a selectable flag too. oh well.

::: mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/AccessibilityTest.kt
@@ +196,5 @@
>              }
>          })
>      }
>  
> +    private fun waitUntilClick(checked: Boolean? = null, selected: Boolean? = null) {

good use of tri-state.

@@ +417,5 @@
> +        // corresponding AccessibilityNodeInfo object.
> +        mainSession.evaluateJS("const li = $('li');" +
> +                "li.addEventListener('click', () =>" +
> +                "  li.setAttribute('aria-selected', " +
> +                "    li.getAttribute('aria-selected') == 'true' ? 'false' : 'true'));")

Can't you put this inline above with an onclick attribute? Also, I thought we didn't need this and that a focused role=option would do the trick.
Attachment #8993452 - Flags: review?(eitan)
(In reply to Eitan Isaacson [:eeejay] from comment #5)
> Comment on attachment 8993452 [details] [diff] [review]
> 1473690 selectable v2
> 
> Review of attachment 8993452 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> I thought we didn't need to mess with any ARIA states, and a focused
> role=option would be good enough. No? Otherwise looks good with the comments
> below.

That's another thing that could be tested. This particular test is more for testing that we handle STATE_CHANGE event correctly. The case you're describing is a a11y focus action that would just return selected state along with nodeInfo data.

> 
> ::: accessible/jsat/EventManager.jsm
> @@ +168,2 @@
> >          if (state.contains(States.CHECKED)) {
> > +          this.present(Presentation.checked(aEvent.accessible));
> 
> So you got rid of the strings? I think we may still need them. What does
> Chrome do?

We already skipped the text (e.g. localized action) for checkable elements. I can add it if you'd like?

> 
> @@ +170,3 @@
> >          } else if (state.contains(States.SELECTED)) {
> > +          this.present(Presentation.selected(aEvent.accessible,
> > +                                             event.isEnabled ? "select" : "unselect"));
> 
> Is "select"/"unselect" the same string that Chrome sends? It should match.
> Same with "check"/"uncheck".

I could not get anything, unless I re-focus on the node, only then I get state along with the rest of the announcement.

> 
> ::: accessible/jsat/Presentation.jsm
> @@ +305,5 @@
> >        clickable: aContext.accessible.actionCount > 0,
> >        checkable: state.contains(States.CHECKABLE),
> >        checked: state.contains(States.CHECKED),
> >        editable: state.contains(States.EDITABLE),
> > +      selected: state.contains(States.SELECTED)
> 
> weird that they don't have a selectable flag too. oh well.
> 
> :::
> mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/
> AccessibilityTest.kt
> @@ +196,5 @@
> >              }
> >          })
> >      }
> >  
> > +    private fun waitUntilClick(checked: Boolean? = null, selected: Boolean? = null) {
> 
> good use of tri-state.
> 
> @@ +417,5 @@
> > +        // corresponding AccessibilityNodeInfo object.
> > +        mainSession.evaluateJS("const li = $('li');" +
> > +                "li.addEventListener('click', () =>" +
> > +                "  li.setAttribute('aria-selected', " +
> > +                "    li.getAttribute('aria-selected') == 'true' ? 'false' : 'true'));")
> 
> Can't you put this inline above with an onclick attribute? Also, I thought
> we didn't need this and that a focused role=option would do the trick.

That won't actually check the code path that deals with state change event. I could add another test that does just that (as I mentioned at the top).
Flags: needinfo?(eitan)
(In reply to Yura Zenevich [:yzen] from comment #6)
> (In reply to Eitan Isaacson [:eeejay] from comment #5)
> > Comment on attachment 8993452 [details] [diff] [review]
> > 1473690 selectable v2
> > 
> > Review of attachment 8993452 [details] [diff] [review]:
> > -----------------------------------------------------------------
> > 
> > I thought we didn't need to mess with any ARIA states, and a focused
> > role=option would be good enough. No? Otherwise looks good with the comments
> > below.
> 
> That's another thing that could be tested. This particular test is more for
> testing that we handle STATE_CHANGE event correctly. The case you're
> describing is a a11y focus action that would just return selected state
> along with nodeInfo data.
> 
> > 
> > ::: accessible/jsat/EventManager.jsm
> > @@ +168,2 @@
> > >          if (state.contains(States.CHECKED)) {
> > > +          this.present(Presentation.checked(aEvent.accessible));
> > 
> > So you got rid of the strings? I think we may still need them. What does
> > Chrome do?
> 
> We already skipped the text (e.g. localized action) for checkable elements.
> I can add it if you'd like?
> 
> > 
> > @@ +170,3 @@
> > >          } else if (state.contains(States.SELECTED)) {
> > > +          this.present(Presentation.selected(aEvent.accessible,
> > > +                                             event.isEnabled ? "select" : "unselect"));
> > 
> > Is "select"/"unselect" the same string that Chrome sends? It should match.
> > Same with "check"/"uncheck".
> 
> I could not get anything, unless I re-focus on the node, only then I get
> state along with the rest of the announcement.
> 

Not the node's text. Rather the event. You can turn on event logging in talkback and grep for TYPE_VIEW_CLICKED and see what it's text field is.

> > 
> > ::: accessible/jsat/Presentation.jsm
> > @@ +305,5 @@
> > >        clickable: aContext.accessible.actionCount > 0,
> > >        checkable: state.contains(States.CHECKABLE),
> > >        checked: state.contains(States.CHECKED),
> > >        editable: state.contains(States.EDITABLE),
> > > +      selected: state.contains(States.SELECTED)
> > 
> > weird that they don't have a selectable flag too. oh well.
> > 
> > :::
> > mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/
> > AccessibilityTest.kt
> > @@ +196,5 @@
> > >              }
> > >          })
> > >      }
> > >  
> > > +    private fun waitUntilClick(checked: Boolean? = null, selected: Boolean? = null) {
> > 
> > good use of tri-state.
> > 
> > @@ +417,5 @@
> > > +        // corresponding AccessibilityNodeInfo object.
> > > +        mainSession.evaluateJS("const li = $('li');" +
> > > +                "li.addEventListener('click', () =>" +
> > > +                "  li.setAttribute('aria-selected', " +
> > > +                "    li.getAttribute('aria-selected') == 'true' ? 'false' : 'true'));")
> > 
> > Can't you put this inline above with an onclick attribute? Also, I thought
> > we didn't need this and that a focused role=option would do the trick.
> 
> That won't actually check the code path that deals with state change event.
> I could add another test that does just that (as I mentioned at the top).

Ah, it would be a focus event? Got it. I don't think we need a test for that.
Flags: needinfo?(eitan)
Comment on attachment 8993452 [details] [diff] [review]
1473690 selectable v2

Review of attachment 8993452 [details] [diff] [review]:
-----------------------------------------------------------------

::: mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/AccessibilityTest.kt
@@ +414,5 @@
> +        sessionRule.waitForPageStop()
> +
> +        // Add click event listener that updates aria-selected and selected state of the
> +        // corresponding AccessibilityNodeInfo object.
> +        mainSession.evaluateJS("const li = $('li');" +

Use multi-line string, e.g. """foo"""
Attachment #8993452 - Flags: review?(nchen) → review+
Posted patch 1473690 selectable v3 (obsolete) — Splinter Review
I looked at what chrome does. They send no text with the ACTION_CLICK event. There's really nothing in the event data that implies selection or selection removal. Though in practice event text does not get announced anyways so even though we provide "selected"["unselected"] as event's text, nothing is being spoken.
Attachment #8993452 - Attachment is obsolete: true
Attachment #8993738 - Flags: review?(eitan)
Also removed checked, selected state insertions from output generator. Talkback now reads directly from node info.
Attachment #8993738 - Attachment is obsolete: true
Attachment #8993738 - Flags: review?(eitan)
Attachment #8993747 - Flags: review?(eitan)
Comment on attachment 8993747 [details] [diff] [review]
1473690 selectable v4

Review of attachment 8993747 [details] [diff] [review]:
-----------------------------------------------------------------

::: accessible/jsat/EventManager.jsm
@@ +170,3 @@
>          } else if (state.contains(States.SELECTED)) {
> +          this.present(Presentation.selected(aEvent.accessible,
> +                                             event.isEnabled ? "select" : "unselect"));

If I understood comment #9, there is no benefit for sending strings? If not, I think this can be a Presentation.clicked, no?
Attachment #8993747 - Flags: review?(eitan) → review+
Pushed by yura.zenevich@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/6ca2392ff3f9
add integration tests for checkboxes and associated events/states. r=eeejay, jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/b41a71c9e2e0
add selectable ingegration tests. r=eeejay, jchen
Backed out 2 changesets (bug 1473690) for jsat/test_content_integration.html failures.

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=a10e41860e7d2e0c92b2f8adc09d297378593d26

Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=189380865&repo=mozilla-inbound

Backout link: https://hg.mozilla.org/integration/mozilla-inbound/rev/a10e41860e7d2e0c92b2f8adc09d297378593d26

[task 2018-07-22T03:53:28.714Z] 03:53:28     INFO - TEST-START | accessible/tests/mochitest/jsat/test_content_integration.html
[task 2018-07-22T03:53:28.974Z] 03:53:28     INFO - GECKO(1022) | WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. Use isContentWindowPrivate instead (but only for frame scripts).
[task 2018-07-22T03:53:28.975Z] 03:53:28     INFO - GECKO(1022) | pbu_isWindowPrivate@resource://gre/modules/PrivateBrowsingUtils.jsm:31:14
[task 2018-07-22T03:53:28.975Z] 03:53:28     INFO - GECKO(1022) | windowPrivacyMatches@chrome://browser/content/browser-sidebar.js:240:12
[task 2018-07-22T03:53:28.976Z] 03:53:28     INFO - GECKO(1022) | startDelayedLoad@chrome://browser/content/browser-sidebar.js:253:10
[task 2018-07-22T03:53:28.976Z] 03:53:28     INFO - GECKO(1022) | _delayedStartup/<@chrome://browser/content/browser.js:1563:7
[task 2018-07-22T03:53:28.977Z] 03:53:28     INFO - GECKO(1022) | promise callback*_delayedStartup@chrome://browser/content/browser.js:1554:5
[task 2018-07-22T03:53:28.977Z] 03:53:28     INFO - GECKO(1022) | EventListener.handleEvent*onLoad@chrome://browser/content/browser.js:1391:5
[task 2018-07-22T03:53:28.977Z] 03:53:28     INFO - GECKO(1022) | onload@chrome://browser/content/browser.xul:1:1
[task 2018-07-22T03:53:29.487Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] INFO content-script.js chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/doc_content_integration.html
[task 2018-07-22T03:53:29.488Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG AccessFu:Start
[task 2018-07-22T03:53:29.488Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG EventManager.start
[task 2018-07-22T03:53:29.489Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG AccessibilityEventObserver.addListener. Total: 1
[task 2018-07-22T03:53:29.497Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] INFO content-script.js data:text/html;charset=utf-8,<html><head><title>such app</title></head><body><h1>wow</h1><ul><li><label><input type="checkbox">many option</label></li></ul><label for="r">much range</label><input min="0" max="10" value="5" type="range" id="r"></body></html>
[task 2018-07-22T03:53:29.505Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG AccessFu:Start
[task 2018-07-22T03:53:29.506Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG EventManager.start
[task 2018-07-22T03:53:29.506Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG AccessibilityEventObserver.addListener. Total: 1
[task 2018-07-22T03:53:29.525Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] WARNING AccessibilityEventObserver.observe: no window for accessible document: document load complete accessible: [ document | such app ]
[task 2018-07-22T03:53:29.526Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] WARNING AccessibilityEventObserver.observe: no window for accessible document: state change (busy) accessible: [ document | such app ]
[task 2018-07-22T03:53:29.526Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG ContentControl.receiveMessage AccessFu:MoveCursor {"inputType":"gesture","origin":"top","action":"moveNext","rule":"Simple"}
[task 2018-07-22T03:53:29.527Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG A11yEvent virtual cursor changed ([ null ] -> [ text leaf | Phone status bar ]) [ document | Traversal Rule test document ]
[task 2018-07-22T03:53:29.546Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG A11yEvent text selection changed [ document | Traversal Rule test document ]
[task 2018-07-22T03:53:29.547Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG A11yEvent text caret moved [ document | Traversal Rule test document ]
[task 2018-07-22T03:53:29.548Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG ContentControl.receiveMessage AccessFu:MoveCursor {"inputType":"gesture","origin":"top","action":"movePrevious","rule":"Simple"}
[task 2018-07-22T03:53:29.552Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG ContentControl.receiveMessage AccessFu:MoveCursor {"inputType":"gesture","origin":"top","action":"moveNext","rule":"Simple"}
[task 2018-07-22T03:53:29.553Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG A11yEvent virtual cursor changed ([ text leaf | Phone status bar ] -> [ pushbutton | Back ]) [ document | Traversal Rule test document ]
[task 2018-07-22T03:53:29.561Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG ContentControl.receiveMessage AccessFu:MoveCursor {"inputType":"gesture","origin":"top","action":"moveNext","rule":"Simple"}
[task 2018-07-22T03:53:29.562Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG A11yEvent virtual cursor changed ([ pushbutton | Back ] -> [ internal frame | null ]) [ document | Traversal Rule test document ]
[task 2018-07-22T03:53:29.564Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG ContentControl.receiveMessage AccessFu:MoveCursor {"inputType":"gesture","origin":"parent","action":"moveFirst","rule":"Simple"}
[task 2018-07-22T03:53:29.570Z] 03:53:29     INFO - GECKO(1022) | JavaScript error: resource://gre/modules/accessibility/Utils.jsm, line 527: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIAccessibleDocument.virtualCursor]
[task 2018-07-22T03:53:29.571Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG A11yEvent virtual cursor changed ([ null ] -> [ heading | wow ]) [ document | such app ]
[task 2018-07-22T03:53:29.580Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG A11yEvent text selection changed [ section | null ]
[task 2018-07-22T03:53:29.580Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG A11yEvent text caret moved [ section | null ]
[task 2018-07-22T03:53:29.590Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG A11yEvent focus [ document | such app ]
[task 2018-07-22T03:53:29.590Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG A11yEvent text selection changed [ document | such app ]
[task 2018-07-22T03:53:29.590Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG A11yEvent text caret moved [ document | such app ]
[task 2018-07-22T03:53:29.597Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] WARNING AccessibilityEventObserver.observe: no window for accessible document: focus accessible: [ document | such app ]
[task 2018-07-22T03:53:29.599Z] 03:53:29     INFO - GECKO(1022) | [Parent 1022, Main Thread] WARNING: /build/glib2.0-prJhLS/glib2.0-2.48.2/./gobject/gsignal.c:3486: signal name 'selection_changed' is invalid for instance '0x7f0f9ea7da60' of type 'MaiAtkType319': 'glib warning', file /builds/worker/workspace/build/src/toolkit/xre/nsSigHandlers.cpp, line 141
[task 2018-07-22T03:53:29.599Z] 03:53:29     INFO - GECKO(1022) | (firefox:1022): GLib-GObject-WARNING **: /build/glib2.0-prJhLS/glib2.0-2.48.2/./gobject/gsignal.c:3486: signal name 'selection_changed' is invalid for instance '0x7f0f9ea7da60' of type 'MaiAtkType319'
[task 2018-07-22T03:53:29.600Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] WARNING AccessibilityEventObserver.observe: no window for accessible document: text selection changed accessible: [ document | such app ]
[task 2018-07-22T03:53:29.605Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] WARNING AccessibilityEventObserver.observe: no window for accessible document: text caret moved accessible: [ document | such app ]
[task 2018-07-22T03:53:29.605Z] 03:53:29     INFO - GECKO(1022) | [AccessFu] DEBUG ContentControl.receiveMessage AccessFu:MoveCursor {"inputType":"gesture","origin":"top","action":"moveNext","rule":"Simple"}
[task 2018-07-22T03:53:29.606Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG ContentControl.receiveMessage AccessFu:MoveCursor {"inputType":"gesture","origin":"parent","action":"moveNext","rule":"Simple"}
[task 2018-07-22T03:53:29.608Z] 03:53:29     INFO - GECKO(1022) | JavaScript error: resource://gre/modules/accessibility/Utils.jsm, line 527: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIAccessibleDocument.virtualCursor]
[task 2018-07-22T03:53:29.611Z] 03:53:29     INFO - GECKO(1022) | [AccessFuContent] DEBUG A11yEvent virtual cursor changed ([ heading | wow ] -> [ checkbutton | many option ]) [ document | such app ]
[task 2018-07-22T03:53:29.628Z] 03:53:29     INFO - TEST-INFO | started process screentopng
[task 2018-07-22T03:53:30.074Z] 03:53:30     INFO - TEST-INFO | screentopng: exit 0
[task 2018-07-22T03:53:30.075Z] 03:53:30     INFO - Buffered messages logged at 03:53:29
[task 2018-07-22T03:53:30.075Z] 03:53:30     INFO - must wait for load
[task 2018-07-22T03:53:30.075Z] 03:53:30     INFO - TEST-PASS | accessible/tests/mochitest/jsat/test_content_integration.html | Event text matches. Got ["Traversal Rule test document","Phone status bar"], expected ["Traversal Rule test document","Phone status bar"]. 
[task 2018-07-22T03:53:30.075Z] 03:53:30     INFO - TEST-PASS | accessible/tests/mochitest/jsat/test_content_integration.html | Correct element is focused: html 
[task 2018-07-22T03:53:30.075Z] 03:53:30     INFO - TEST-PASS | accessible/tests/mochitest/jsat/test_content_integration.html | undefined assertion name 
[task 2018-07-22T03:53:30.075Z] 03:53:30     INFO - TEST-PASS | accessible/tests/mochitest/jsat/test_content_integration.html | Event text matches. Got ["Back","button"], expected ["Back","button"]. 
[task 2018-07-22T03:53:30.079Z] 03:53:30     INFO - TEST-PASS | accessible/tests/mochitest/jsat/test_content_integration.html | Event text matches. Got ["such app","wow","heading level 1"], expected ["such app","wow","heading level 1"]. 
[task 2018-07-22T03:53:30.080Z] 03:53:30     INFO - TEST-PASS | accessible/tests/mochitest/jsat/test_content_integration.html | Correct element is focused: iframe 
[task 2018-07-22T03:53:30.082Z] 03:53:30     INFO - Buffered messages finished
[task 2018-07-22T03:53:30.083Z] 03:53:30     INFO - TEST-UNEXPECTED-FAIL | accessible/tests/mochitest/jsat/test_content_integration.html | Event text matches. Got ["many option","check button","First item","list","1 item"], expected ["many option","not checked","check button","First item","list","1 item"]. -     Structures begin differing at:
[task 2018-07-22T03:53:30.085Z] 03:53:30     INFO - got[1] = "check button"
[task 2018-07-22T03:53:30.089Z] 03:53:30     INFO - expected[1] = "not checked"
[task 2018-07-22T03:53:30.090Z] 03:53:30     INFO - 
[task 2018-07-22T03:53:30.091Z] 03:53:30     INFO - SimpleTest.isDeeply@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:1602:9
[task 2018-07-22T03:53:30.092Z] 03:53:30     INFO - eventTextMatches@chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/jsatcommon.js:366:5
[task 2018-07-22T03:53:30.094Z] 03:53:30     INFO - testSimpleNavigation@chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/test_content_integration.html:47:7
[task 2018-07-22T03:53:30.095Z] 03:53:30     INFO - async*doTest/</<@chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/test_content_integration.html:435:17
[task 2018-07-22T03:53:30.096Z] 03:53:30     INFO - MessageListener.receiveMessage*setupMessageManager/startedPromise<@chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/jsatcommon.js:243:7
[task 2018-07-22T03:53:30.097Z] 03:53:30     INFO - setupMessageManager@chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/jsatcommon.js:242:26
[task 2018-07-22T03:53:30.098Z] 03:53:30     INFO - async*start/<@chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/jsatcommon.js:179:43
[task 2018-07-22T03:53:30.099Z] 03:53:30     INFO - start@chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/jsatcommon.js:179:24
[task 2018-07-22T03:53:30.100Z] 03:53:30     INFO - doTest/</<@chrome://mochitests/content/a11y/accessible/tests/mochitest/jsat/test_content_integration.html:433:17
[task 2018-07-22T03:53:30.101Z] 03:53:30     INFO - setTimeout handler*SimpleTest_setTimeoutShim@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:676:12
[task 2018-07-22T03:53:30.103Z] 03:53:30     INFO - waitForDocLoad/<@chrome://mochitests/content/a11y/accessible/tests/mochitest/common.js:177:9
[task 2018-07-22T03:53:30.104Z] 03:53:30     INFO - setTimeout handler*SimpleTest_setTimeoutShim@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:676:12
[task 2018-07-22T03:53:30.106Z] 03:53:30     INFO - waitForDocLoad@chrome://mochitests/content/a11y/accessible/tests/mochitest/common.js:168:5
[task 2018-07-22T03:53:30.107Z] 03:53:30     INFO - focusedOrLoaded/<@chrome://mochikit/content/tests/SimpleTest/SimpleTest.js:795:59
Pushed by yura.zenevich@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/9f30ad8f38e2
add integration tests for checkboxes and associated events/states. r=eeejay, jchen
https://hg.mozilla.org/integration/mozilla-inbound/rev/e53dac3a93f5
add selectable ingegration tests. r=eeejay, jchen
Changing this to a meta bug, so not to pile on more commits.
Keywords: leave-openmeta
Depends on: 1481922
Depends on: 1481924
You need to log in before you can comment on or make changes to this bug.