Closed Bug 1225832 Opened 9 years ago Closed 8 years ago

Re-enable browser_UITour_loop.js

Categories

(Hello (Loop) :: Client, defect, P2)

defect
Points:
5

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: mikedeboer, Assigned: mikedeboer)

References

Details

(Whiteboard: [e10s])

Attachments

(1 file, 4 obsolete files)

In bug 1048850 we had to disable the UITour unit tests, because it relies too much on synchronous behavior and immediate availability of DOM elements.

We can bring that behavior back if we pre-fetch all the required data from the Loop API _before_ we start rendering anything with React.
Flags: qe-verify-
Flags: firefox-backlog+
Attached patch WIP patch (obsolete) — Splinter Review
Attachment #8688956 - Flags: feedback?(standard8)
Assignee: nobody → mdeboer
Status: NEW → ASSIGNED
Iteration: --- → 45.2 - Nov 30
Attachment #8688956 - Attachment is obsolete: true
Attachment #8688956 - Flags: feedback?(standard8)
Attachment #8689493 - Flags: review?(standard8)
Forgot to have build-jsx running...
Attachment #8689493 - Attachment is obsolete: true
Attachment #8689493 - Flags: review?(standard8)
Attachment #8689512 - Flags: review?(standard8)
Comment on attachment 8689512 [details] [diff] [review]
Patch v1.1: fix UITour unit tests for Loop without navigator.mozLoop present

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

I like this, because it means we're not getting these async in the views :-)

However, unfortunately for me its failing when I run the test locally:

176 INFO Starting 
177 INFO 	test_setConfiguration
178 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | pref should be false but exist - 
179 INFO == Done test, doing shared checks before teardown ==
180 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | Element should not be null, when checking visibility - 
181 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | Highlight should be closed/hidden after UITour tab is closed - 
182 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | Element should not be null, when checking visibility - 
183 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | Tooltip should be closed/hidden after UITour tab is closed - 
184 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | @noautohide on the menu panel should have been cleaned up - 
185 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | The panel shouldn't have @panelopen - 
186 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | The panel shouldn't be open - 
187 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | Menu button should know that the menu is closed - 
188 INFO Done shared checks
189 INFO Starting 
190 INFO 	test_resumeViaMenuPanel_roomClosedTabOpen
JavaScript error: chrome://browser/content/loop/shared/js/validate.js, line 101: TypeError: missing required roomList
JavaScript error: chrome://browser/content/loop/shared/js/validate.js, line 101: TypeError: missing required roomList
191 INFO Console message: [JavaScript Error: "TypeError: missing required roomList" {file: "chrome://browser/content/loop/shared/js/validate.js" line: 101}]
192 INFO Console message: [JavaScript Error: "TypeError: missing required roomList" {file: "chrome://browser/content/loop/shared/js/validate.js" line: 101}]

::: browser/components/loop/content/js/conversation.jsx
@@ +104,1 @@
>        ["GetAllConstants"],

I think we should add a note here about the fact that requestIdx is keyed off the order of the requests *and* prefetch, and changes should be careful to update both.

@@ +111,5 @@
> +    ];
> +    var prefetch = [
> +      ["GetConversationWindowData", windowId]
> +    ];
> +    return loop.requestMulti.apply(null, requests.concat(prefetch)).then(function(results) {

nit: blank line before the return please.

::: browser/components/loop/content/js/roomViews.jsx
@@ +284,5 @@
>      handleCopyButtonClick: function(event) {
>        event.preventDefault();
>  
>        this.props.dispatcher.dispatch(new sharedActions.CopyRoomUrl({
> +        roomUrl: this.props.roomData.roomUrl || "dummy",

This doesn't seem to belong to this patch, or if it does, then "dummy" doesn't seem right.

::: browser/components/loop/ui/fake-mozLoop.js
@@ +150,5 @@
>      EnsureRegistered: function() {},
>      GetAudioBlob: function() {
>        return new Blob([new ArrayBuffer(10)], { type: "audio/ogg" });
>      },
> +    GetDoNotDisturb: function() { return true; }, 

nit: eslint says trailing space.

::: browser/components/uitour/test/browser_UITour_loop.js
@@ +224,5 @@
>      });
>      setupFakeRoom();
>      LoopRooms.open("fakeTourRoom");
>    }),
> +  /*runOffline(function test_notifyLoopRoomURLEmailed(done) {

This either needs uncommenting, or a XXX statement with bug number for getting it fixed up.
Attachment #8689512 - Flags: review?(standard8) → review-
(In reply to Mark Banner (:standard8) from comment #5)
> I like this, because it means we're not getting these async in the views :-)
> 
> However, unfortunately for me its failing when I run the test locally:

Prolly due to bitrot.
Attachment #8689512 - Attachment is obsolete: true
Attachment #8691880 - Flags: review?(standard8)
Comment on attachment 8691880 [details] [diff] [review]
Patch v2: fix UITour unit tests for Loop without navigator.mozLoop present

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

r+ with the console.log removed, and the skip = true changed to something more reasonable in browser/components/uitour/test/browser.ini

::: browser/components/loop/content/js/roomViews.jsx
@@ +774,5 @@
>  
>        var shouldRenderInvitationOverlay = this._shouldRenderInvitationOverlay();
>        var shouldRenderEditContextView = this.state.showEditContext;
>        var roomData = this.props.roomStore.getStoreState("activeRoom");
> +      console.log("ROOMDATA::", roomData);

I think you left that in by mistake.
Attachment #8691880 - Flags: review?(standard8) → review+
https://hg.mozilla.org/integration/fx-team/rev/958669938c10f37112896f1f47e8ed8074c1495d
Bug 1225832: fix UITour unit tests for Loop without navigator.mozLoop present. r=Standard8
Sorry Mike, I had to back this out for almost perma mochitest failures (mainly on Mac) such as shown below:

Backout
https://hg.mozilla.org/integration/fx-team/rev/f48352b311eb

https://treeherder.mozilla.org/logviewer.html#?job_id=5942896&repo=fx-team
 10:08:31     INFO -  186 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | Loop chat window should've opened -
 10:08:31     INFO -  187 INFO TEST-PASS | browser/components/uitour/test/browser_UITour_loop.js | Check Loop:ChatWindowShown notification -
 10:08:31     INFO -  188 INFO Console message: [JavaScript Error: "Content Security Policy: The page's settings blocked the loading of a resource at blob:null/b20939b2-2a6d-4b4b-b60d-41e91540cd38 ("default-src about://:1 about: file: chrome: data: wss://* http://* https://*")."]
 10:08:31     INFO -  189 INFO Console message: [JavaScript Error: "Content Security Policy: The page's settings blocked the loading of a resource at blob:null/81d4ba0c-3247-b44e-901b-65e613af83a0 ("default-src about://:1 about: file: chrome: data: wss://* http://* https://*")."]
 10:08:31     INFO -  190 INFO Console message: [JavaScript Error: "Content Security Policy: The page's settings blocked the loading of a resource at blob:null/6b42eaf0-8092-d546-ac85-0237b6e2381b ("default-src about://:1 about: file: chrome: data: wss://* http://* https://*")."]
 10:08:31     INFO -  191 INFO Console message: [JavaScript Error: "Content Security Policy: The page's settings blocked the loading of a resource at blob:null/1481ee53-5487-a84a-8c9a-b30b19fe28d0 ("default-src about://:1 about: file: chrome: data: wss://* http://* https://*")."]
 10:08:31     INFO -  192 INFO TEST-UNEXPECTED-FAIL | browser/components/uitour/test/browser_UITour_loop.js | A promise chain failed to handle a rejection:  - Email button should be there
 10:08:31     INFO -  Stack trace:
 10:08:31     INFO -  JS frame :: resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js :: PendingErrors.register :: line 191
 10:08:31     INFO -  JS frame :: resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js :: this.PromiseWalker.completePromise :: line 715
 10:08:31     INFO -  JS frame :: resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js :: Handler.prototype.process :: line 970
 10:08:31     INFO -  JS frame :: resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js :: this.PromiseWalker.walkerLoop :: line 813
 10:08:42     INFO -  193 INFO Console message: 1448647722113	Toolkit.Telemetry	WARN	TelemetryStorage::_scanArchive - have seen this id before: 18bb372c-ef1e-2a48-8af7-4d756b1e37f4, overwrite: false
 10:08:43     INFO -  194 INFO Console message: [JavaScript Error: "1448647723623	Toolkit.GMP	ERROR	GMPInstallManager.simpleCheckAndInstall Could not check for addons: Error: got node name: html, expected: updates (resource://gre/modules/addons/ProductAddonChecker.jsm:145:1) JS Stack trace: parseXML@ProductAddonChecker.jsm:145:1 < promise callback*ProductAddonChecker.getProductAddonList@ProductAddonChecker.jsm:299:12 < GMPInstallManager.prototype.checkForAddons@GMPInstallManager.jsm:107:5 < GMPInstallManager.prototype.simpleCheckAndInstall<@GMPInstallManager.jsm:213:29 < gBrowserInit._delayedStartup/<@browser.js:12323:7 < setTimeout handler*gBrowserInit._delayedStartup@browser.js:12319:1 < EventListener.handleEvent*gBrowserInit.onLoad@browser.js:12040:5 < onload@browser.xul:1:1" {file: "resource://gre/modules/Log.jsm" line: 751}]
 10:09:06     INFO -  Not taking screenshot here: see the one that was previously logged
 10:09:06     INFO -  195 INFO TEST-UNEXPECTED-FAIL | browser/components/uitour/test/browser_UITour_loop.js | Test timed out -
 10:09:06     INFO -  MEMORY STAT | vsize 3456MB | residentFast 458MB | heapAllocated 96MB
 10:09:06     INFO -  196 INFO TEST-OK | browser/components/uitour/test/browser_UITour_loop.js | took 45068ms
 10:09:06     INFO -  197 INFO TEST-START | browser/components/uitour/test/browser_UITour_modalDialog.js
Rank: 23
Iteration: 45.2 - Nov 30 → ---
Carrying over r=Standard8
Attachment #8691880 - Attachment is obsolete: true
Attachment #8694147 - Flags: review+
https://hg.mozilla.org/integration/fx-team/rev/da1191bc1a8e92ffaa75f7d39462ce71b5f480df
Bug 1225832: partially fix UITour for Loop without navigator.mozLoop present. r=Standard8
Keywords: leave-open
What I did in comment 14 was land all the changes to make the UITour work _at least_ for the panel and partially the conversation window.

The test failure on OSX 10.10 - which blocks re-enabling the test on infra through browser.ini - is intriguing and I can not reproduce it locally. This means that I will need several try pushes with added logging and possibly screen dumps to figure out what's going on exactly on those boxes.
The time I will spend on this is unknown, because I need to 1) push to try 2) wait 'till build and tests finish 3) examine logs 4) implement fix or extend logging 5) rinse, repeat. Therefore I chose to land the LoopAPI client prefetching mechanism to make things work better in the meanwhile.
Rank: 23 → 10
Priority: P2 → P1
Rank: 10 → 20
Priority: P1 → P2
Rank: 20 → 26
Closing as WON'T FIX since we will not use the FTU door hangers anymore in the new FTU.
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → WONTFIX
Removing leave-open keyword from resolved bugs, per :sylvestre.
Keywords: leave-open
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: