on xenial help sign in
Fix up new tests to pass again
commite4093993eae45338e6eb65e35b3d140d57b44b20 authorMichael Terry <michael.terry@canonical.com> dateWed 18 Nov 2015, 12:08 (11 years ago) parent5578813
5 files changed+51−30
qml/Stages/DesktopStage.qml−2 qml/Tutorial/InactivityTimer.qml+2 qml/Tutorial/TutorialContent.qml+10−1 qml/Tutorial/TutorialPage.qml+11−5 tests/qmltests/Tutorial/tst_Tutorial.qml+28−22
qml/Stages/DesktopStage.qml−2
@@ -163,8 +163,6 @@ AbstractStage {
163163 (priv.foregroundMaximizedAppIdIndex === -1 || priv.foregroundMaximizedAppIdIndex >= index) ||
164164 (spread.state == "altTab" && index === spread.highlightedIndex)
165165
166− onVisibleChanged: console.log("VISIBLE", model.appId, visible)
167−
168166 Binding {
169167 target: ApplicationManager.get(index)
170168 property: "requestedState"
qml/Tutorial/InactivityTimer.qml+2
@@ -18,6 +18,8 @@ import QtQuick 2.4
1818import Ubuntu.Components 1.3
1919
2020Item {
21+ readonly property alias running: internalTimer.running
22+ property alias interval: internalTimer.interval
2123 property var page
2224 property int lastInputTimestamp
2325
qml/Tutorial/TutorialContent.qml+10−1
@@ -75,8 +75,16 @@ Item {
7575 AccountsService.demoEdgesCompleted.indexOf("left") != -1
7676 isReady: !skipped && !paused && !keyboardVisible
7777
78+ // Use an idle timer here, because when constructed, all our isReady variables will be false.
79+ // Qml needs a moment to copy their values from Tutorial.qml. So we idle it and recheck.
80+ Timer {
81+ id: tutorialLeftTimer
82+ interval: 0
83+ onTriggered: if (tutorialLeft.isReady && !tutorialLeft.shown) tutorialLeft.show()
84+ }
85+
7886 onSkippedChanged: if (skipped && shown) hide()
79− onIsReadyChanged: if (isReady && !shown) show()
87+ onIsReadyChanged: if (isReady && !shown) tutorialLeftTimer.start()
8088 onFinished: AccountsService.markDemoEdgeCompleted("left")
8189 }
8290
@@ -129,6 +137,7 @@ Item {
129137
130138 InactivityTimer {
131139 id: tutorialRightInactivityTimer
140+ objectName: "tutorialRightInactivityTimer"
132141 lastInputTimestamp: root.lastInputTimestamp
133142 page: parent
134143 }
qml/Tutorial/TutorialPage.qml+11−5
@@ -42,17 +42,25 @@ Showable {
4242 shown: false
4343
4444 opacity: Math.max(Math.min(_showOpacity, opacityOverride), 0)
45− onOpacityOverrideChanged: if (opacityOverride <= 0) hide()
45+ onOpacityOverrideChanged: {
46+ if (opacityOverride <= 0) {
47+ d.showOnUnpause = false;
48+ hide();
49+ }
50+ }
4651 property real _showOpacity: 0
4752
4853 onPausedChanged: {
4954 if (paused && shown) {
55+ d.showOnUnpause = true;
5056 hide();
5157 } else if (!paused && d.showOnUnpause) {
52− d.showOnUnpause = false;
5358 if (isReady) {
5459 show();
60+ } else if (hideAnimation.running) {
61+ hideAnimation.stop();
5562 }
63+ d.showOnUnpause = false;
5664 }
5765 }
5866
@@ -70,9 +78,7 @@ Showable {
7078 duration: UbuntuAnimation.BriskDuration
7179 onStopped: {
7280 root.visible = false;
73− if (root.paused) {
74− d.showOnUnpause = true;
75− } else {
81+ if (!d.showOnUnpause) {
7682 root.finished();
7783 }
7884 }
tests/qmltests/Tutorial/tst_Tutorial.qml+28−22
@@ -24,6 +24,7 @@ import Unity.Application 0.1
2424import Unity.Test 0.1 as UT
2525
2626import "../../../qml"
27+import "../../../qml/Components"
2728
2829Item {
2930 id: root
@@ -73,6 +74,10 @@ Item {
7374 sourceComponent: Component {
7475 Shell {
7576 property string indicatorProfile: "phone"
77+ orientations: Orientations {
78+ native_: Qt.PortraitOrientation
79+ primary: Qt.PortraitOrientation
80+ }
7681
7782 Component.onDestruction: {
7883 shellLoader.itemDestroyed = true;
@@ -221,6 +226,7 @@ Item {
221226
222227 // kill all (fake) running apps
223228 killApps();
229+ SurfaceManager.inputMethodSurface().destroy(); // so that InputMethod will notice new one
224230
225231 // reload our test subject to get it in a fresh state once again
226232 shellLoader.active = true;
@@ -288,20 +294,6 @@ Item {
288294 tryCompare(tutorialBottom, "opacity", 1);
289295 }
290296
291− function test_longPressDismissesTutorialPage() {
292− var tutorialLeft = findChild(shell, "tutorialLeft");
293−
294− verify(tutorialLeft.shown);
295− compare(AccountsService.demoEdgesCompleted, []);
296−
297− mousePress(tutorialLeft);
298− wait(1000);
299− mouseRelease(tutorialLeft);
300−
301− tryCompare(tutorialLeft, "shown", false);
302− tryCompare(AccountsService, "demoEdgesCompleted", ["left"]);
303− }
304−
305297 function test_tutorialLeftEdges() {
306298 var tutorial = findChild(shell, "tutorial");
307299 var tutorialLeft = findChild(tutorial, "tutorialLeft");
@@ -377,6 +369,18 @@ Item {
377369 tryCompare(AccountsService, "demoEdgesCompleted", ["left"]);
378370 }
379371
372+ function test_tutorialLeftAutoSkipped() {
373+ // Test that we skip the tutorial if user uses left edge themselves
374+
375+ var tutorialLeft = findChild(shell, "tutorialLeft");
376+ LightDM.Greeter.showGreeter();
377+ tryCompare(tutorialLeft, "visible", false);
378+ compare(AccountsService.demoEdgesCompleted, []);
379+
380+ touchFlick(shell, 0, halfHeight, halfWidth, halfHeight);
381+ tryCompare(AccountsService, "demoEdgesCompleted", ["left"]);
382+ }
383+
380384 function test_tutorialTopEdges() {
381385 var tutorial = findChild(shell, "tutorial");
382386 var tutorialTop = findChild(tutorial, "tutorialTop");
@@ -491,17 +495,16 @@ Item {
491495 // Test that if we exit the top tutorial, we don't immediately
492496 // jump into right tutorial.
493497 var tutorialRight = findChild(shell, "tutorialRight");
494− var tutorialRightTimer = findInvisibleChild(tutorialRight, "tutorialRightTimer");
498+ var tutorialRightTimer = findInvisibleChild(tutorialRight, "tutorialRightInactivityTimer");
495499
496500 tutorialRightTimer.interval = 1;
497501 openTutorialTop();
498− ApplicationManager.startApplication("dialer-app");
499− ApplicationManager.startApplication("camera-app");
500− ApplicationManager.startApplication("messaging-app");
502+ ApplicationManager.startApplication("gallery-app");
503+ ApplicationManager.startApplication("facebook-webapp");
501504 tryCompare(ApplicationManager, "count", 3);
502505
503506 AccountsService.demoEdgesCompleted = ["left", "top"];
504− verify(tutorialRightTimer.running);
507+ verify(tutorialRightTimer.running, true);
505508 verify(!tutorialRight.shown);
506509 tryCompare(tutorialRight, "shown", true);
507510 }
@@ -576,7 +579,7 @@ Item {
576579 tryCompare(tutorialLeft, "visible", false);
577580
578581 callManager.foregroundCall = null;
579− verify(tutorialLeft.shown);
582+ tryCompare(tutorialLeft, "shown", true);
580583 verify(!tutorialLeft.paused);
581584 }
582585
@@ -659,13 +662,16 @@ Item {
659662 surface.setState(Mir.RestoredState);
660663 tryCompare(inputMethod, "state", "shown");
661664
665+ var tutorial = findChild(shell, "tutorial");
666+ tryCompare(tutorial, "keyboardVisible", true);
667+
662668 AccountsService.demoEdges = true;
663669 var tutorialLeft = findChild(shell, "tutorialLeft");
664670 verify(!tutorialLeft.shown);
665671
666672 surface.setState(Mir.MinimizedState);
667673 tryCompare(inputMethod, "state", "hidden");
668− verify(tutorialLeft.shown);
674+ tryCompare(tutorialLeft, "shown", false);
669675 }
670676
671677 function test_accountsServiceSettings() {
@@ -679,7 +685,7 @@ Item {
679685 AccountsService.demoEdges = true;
680686 tutorialLeft = findChild(shell, "tutorialLeft");
681687 verify(tutorialLeft != null);
682− verify(tutorialLeft.shown);
688+ tryCompare(tutorialLeft, "shown", true);
683689 }
684690 }
685691}