on xenial help sign in
sync with update that fixes random crashes
commit3bc70017862c521c452af0b17aa24a989bf97da0 authorchris.gagnon <chris.gagnon@canonical.com> dateThu 31 Oct 2013, 21:41 (13 years ago) parentfdb8af915b2b34
8 files changed+121−102
tests/autopilot/unity8/shell/emulators/create_interactive_notification.py tests/autopilot/unity8/shell/emulators/dash.py+9−18 tests/autopilot/unity8/shell/emulators/greeter.py+2−1 tests/autopilot/unity8/shell/emulators/hud.py+9−4 tests/autopilot/unity8/shell/emulators/launcher.py+1−1 tests/autopilot/unity8/shell/emulators/main_window.py+18−16 tests/autopilot/unity8/shell/tests/__init__.py+39−19 tests/autopilot/unity8/shell/tests/test_notifications.py+43−43
tests/autopilot/unity8/shell/emulators/create_interactive_notification.pymode 100755 → 100644

Only the mode changed.

tests/autopilot/unity8/shell/emulators/dash.py+9−18
@@ -18,44 +18,35 @@
1818#
1919
2020from unity8.shell.emulators import UnityEmulatorBase
21−from time import sleep
21+
2222
2323class Dash(UnityEmulatorBase):
2424
2525 """An emulator that understands the Dash."""
2626
2727 def get_home_applications_grid(self):
28− for i in range(1,10):
29− get_grid = self.get_scope('home').select_single(
30− "GenericFilterGrid",
31− objectName="applications.scope"
32− )
33− if get_grid != None:
34− break
35− sleep(1)
28+ get_grid = self.get_scope('home').wait_select_single(
29+ "GenericFilterGrid",
30+ objectName="applications.scope"
31+ )
3632 return get_grid
3733
3834 def get_application_icon(self, text):
3935 """Returns a 'Tile' icon that has the text 'text' from the application
4036 grid.
4137
42− Will return None if the icon isn't found.
43−
4438 :param text: String containing the text of the icon to search for.
4539
4640 """
4741 app_grid = self.get_home_applications_grid()
48− for i in range(1,10):
49− resp_grid = app_grid.select_single('ResponsiveGridView')
50− if resp_grid != None:
51− break
52− sleep(1)
42+ resp_grid = app_grid.wait_select_single('ResponsiveGridView')
5343 return resp_grid.select_single('Tile', text=text)
5444
5545 def get_scope(self, scope_name='home'):
56− dash_content = self.select_single(
46+ dash_content = self.wait_select_single(
5747 'QQuickListView',
5848 objectName='dashContentList'
5949 )
6050 scope_id = "%s.scope" % scope_name
61− return dash_content.select_single('QQuickLoader', scopeId=scope_id)
51+ return dash_content.wait_select_single(
52+ 'QQuickLoader', scopeId=scope_id)
tests/autopilot/unity8/shell/emulators/greeter.py+2−1
@@ -40,4 +40,5 @@ class Greeter(UnityEmulatorBase):
4040 self.created.wait_for(False)
4141
4242 def get_prompt(self):
43− return self.select_single("TextField", objectName="passwordInput")
43+ return self.wait_select_single(
44+ "TextField", objectName="passwordInput")
tests/autopilot/unity8/shell/emulators/hud.py+9−4
@@ -26,6 +26,7 @@ from autopilot.input import Touch
2626
2727SwipeCoords = namedtuple('SwipeCoords', 'start_x end_x start_y end_y')
2828
29+
2930class Hud(UnityEmulatorBase, DragMixin):
3031
3132 """An emulator that understands the Hud."""
@@ -34,13 +35,16 @@ class Hud(UnityEmulatorBase, DragMixin):
3435 """Swipes open the Hud."""
3536 self.touch = Touch.create()
3637
37− window = self.get_root_instance().select_single('QQuickView')
38− hud_show_button = window.select_single("HudButton")
38+ window = self.get_root_instance().wait_select_single('QQuickView')
39+ hud_show_button = window.wait_select_single("HudButton")
3940
4041 swipe_coords = self.get_button_swipe_coords(window, hud_show_button)
4142
4243 self.touch.press(swipe_coords.start_x, swipe_coords.start_y)
43− self._drag(swipe_coords.start_x, swipe_coords.start_y, swipe_coords.start_x, swipe_coords.end_y)
44+ self._drag(swipe_coords.start_x,
45+ swipe_coords.start_y,
46+ swipe_coords.start_x,
47+ swipe_coords.end_y)
4448 try:
4549 hud_show_button.opacity.wait_for(1.0)
4650 self.touch.release()
@@ -74,6 +78,7 @@ class Hud(UnityEmulatorBase, DragMixin):
7478 start_x = int(main_view.x + (main_view.width / 2))
7579 end_x = start_x
7680 start_y = main_view.y + (main_view.height - 3)
77− end_y = main_view.y + int(hud_show_button.y + (hud_show_button.height/2))
81+ end_y = main_view.y + int(
82+ hud_show_button.y + (hud_show_button.height/2))
7883
7984 return SwipeCoords(start_x, end_x, start_y, end_y)
tests/autopilot/unity8/shell/emulators/launcher.py+1−1
@@ -29,7 +29,7 @@ class Launcher(UnityEmulatorBase):
2929 """Swipes open the launcher."""
3030 touch = Touch.create()
3131
32− view = self.get_root_instance().select_single('QQuickView')
32+ view = self.get_root_instance().wait_select_single('QQuickView')
3333 start_x = view.x + 1
3434 start_y = view.y + view.height / 2
3535 stop_x = start_x + self.panelWidth + 1
tests/autopilot/unity8/shell/emulators/main_window.py+18−16
@@ -32,64 +32,66 @@ class MainWindow(object):
3232
3333 def get_qml_view(self):
3434 """Get the main QML view"""
35− return self.app.select_single("QQuickView")
35+ return self.app.wait_select_single("QQuickView")
3636
3737 def get_greeter(self):
3838 return self.app.select_single(Greeter)
3939
4040 def get_greeter_content_loader(self):
41− return self.app.select_single(
41+ return self.app.wait_select_single(
4242 "QQuickLoader",
4343 objectName="greeterContentLoader"
4444 )
4545
4646 def get_login_loader(self):
47− return self.app.select_single("QQuickLoader", objectName="loginLoader")
47+ return self.app.wait_select_single(
48+ "QQuickLoader", objectName="loginLoader")
4849
4950 def get_login_list(self):
50− return self.app.select_single("LoginList")
51+ return self.app.wait_select_single("LoginList")
5152
5253 def get_hud(self):
53− return self.app.select_single(Hud)
54+ return self.app.wait_select_single(Hud)
5455
5556 def get_hud_showable(self):
56− return self.app.select_single("Showable", objectName="hudShowable")
57+ return self.app.wait_select_single(
58+ "Showable", objectName="hudShowable")
5759
5860 def get_hud_show_button(self):
59− return self.app.select_single("HudButton")
61+ return self.app.wait_select_single("HudButton")
6062
6163 def get_hud_edge_drag_area(self):
62− return self.app.select_single(objectName="hudDragArea")
64+ return self.app.wait_select_single(objectName="hudDragArea")
6365
6466 def get_dash(self):
65− return self.app.select_single(Dash)
67+ return self.app.wait_select_single(Dash)
6668
6769 def get_dash_home_applications_grid(self):
68− return self.app.select_single(
70+ return self.app.wait_select_single(
6971 "ApplicationsFilterGrid",
7072 objectName="dashHomeApplicationsGrid"
7173 )
7274
7375 def get_bottombar(self):
74− return self.app.select_single("Bottombar")
76+ return self.app.wait_select_single("Bottombar")
7577
7678 def get_launcher(self):
77− return self.app.select_single(Launcher)
79+ return self.app.wait_select_single(Launcher)
7880
7981 def get_pinPadLoader(self):
80− return self.app.select_single(
82+ return self.app.wait_select_single(
8183 "QQuickLoader",
8284 objectName="pinPadLoader"
8385 )
8486
8587 def get_pinPadButton(self, buttonId):
86− return self.app.select_single(
88+ return self.app.wait_select_single(
8789 "PinPadButton",
8890 objectName="pinPadButton%i" % buttonId
8991 )
9092
9193 def get_lockscreen(self):
92− return self.app.select_single("Lockscreen")
94+ return self.app.wait_select_single("Lockscreen")
9395
9496 def get_pinentryField(self):
95− return self.app.select_single(objectName="pinentryField")
97+ return self.app.wait_select_single(objectName="pinentryField")
tests/autopilot/unity8/shell/tests/__init__.py+39−19
@@ -34,7 +34,7 @@ import logging
3434import os.path
3535import subprocess
3636import sys
37−from testtools.matchers import Equals, NotEquals
37+from testtools.matchers import Equals
3838
3939from unity8 import (
4040 get_lib_path,
@@ -53,7 +53,7 @@ logger = logging.getLogger(__name__)
5353UNITYSHELL_GSETTINGS_SCHEMA = "org.compiz.unityshell"
5454UNITYSHELL_GSETTINGS_PATH = "/org/compiz/profiles/unity/plugins/unityshell/"
5555UNITYSHELL_LAUNCHER_KEY = "launcher-hide-mode"
56−UNITYSHELL_LAUNCHER_MODE = 1 # launcher hidden
56+UNITYSHELL_LAUNCHER_MODE = 1 # launcher hidden
5757
5858
5959def _get_device_emulation_scenarios(devices='All'):
@@ -93,17 +93,25 @@ class UnityTestCase(AutopilotTestCase):
9393 ], stderr=subprocess.STDOUT)
9494 except subprocess.CalledProcessError, e:
9595 sys.stderr.write(
96− "Error: `initctl status unity8` failed, most probably the unity8 session could not be found:\n\n"
96+ "Error: `initctl status unity8` failed, most probably the "
97+ "unity8 session could not be found:\n\n"
9798 "{0}\n"
98− "Please install unity8 or copy data/unity8.conf to {1}\n".format(
99+ "Please install unity8 or copy data/unity8.conf to "
100+ "{1}\n".format(
99101 e.output,
100− os.path.join(os.getenv("XDG_CONFIG_HOME", os.path.join(os.getenv("HOME"), ".config")), "upstart")
101− ))
102+ os.path.join(os.getenv("XDG_CONFIG_HOME",
103+ os.path.join(os.getenv("HOME"),
104+ ".config")
105+ ),
106+ "upstart")
107+ )
108+ )
102109 sys.exit(1)
103110
104111 if "start/" in output:
105112 sys.stderr.write(
106− "Error: Unity is currently running, these tests require it to be 'stopped'.\n"
113+ "Error: Unity is currently running, these tests require it to "
114+ "be 'stopped'.\n"
107115 "Please run this command before running these tests: \n"
108116 "initctl stop unity8\n"
109117 )
@@ -111,11 +119,17 @@ class UnityTestCase(AutopilotTestCase):
111119
112120 def setUp(self):
113121 super(UnityTestCase, self).setUp()
114− if Gio is not None and UNITYSHELL_GSETTINGS_SCHEMA in Gio.Settings.list_relocatable_schemas():
122+ if (Gio is not None and
123+ UNITYSHELL_GSETTINGS_SCHEMA in
124+ Gio.Settings.list_relocatable_schemas()):
125+
115126 # Hide Unity launcher
116− self._unityshell_schema = Gio.Settings.new_with_path(UNITYSHELL_GSETTINGS_SCHEMA, UNITYSHELL_GSETTINGS_PATH)
117− self._launcher_hide_mode = self._unityshell_schema.get_int(UNITYSHELL_LAUNCHER_KEY)
118− self._unityshell_schema.set_int(UNITYSHELL_LAUNCHER_KEY, UNITYSHELL_LAUNCHER_MODE)
127+ self._unityshell_schema = Gio.Settings.new_with_path(
128+ UNITYSHELL_GSETTINGS_SCHEMA, UNITYSHELL_GSETTINGS_PATH)
129+ self._launcher_hide_mode = self._unityshell_schema.get_int(
130+ UNITYSHELL_LAUNCHER_KEY)
131+ self._unityshell_schema.set_int(
132+ UNITYSHELL_LAUNCHER_KEY, UNITYSHELL_LAUNCHER_MODE)
119133 self.addCleanup(self._reset_launcher)
120134
121135 self._proxy = None
@@ -136,7 +150,8 @@ class UnityTestCase(AutopilotTestCase):
136150
137151 def _reset_launcher(self):
138152 """Reset Unity launcher hide mode"""
139− self._unityshell_schema.set_int(UNITYSHELL_LAUNCHER_KEY, self._launcher_hide_mode)
153+ self._unityshell_schema.set_int(
154+ UNITYSHELL_LAUNCHER_KEY, self._launcher_hide_mode)
140155
141156 def _setup_display_details(self):
142157 scale_divisor = self._determine_geometry()
@@ -217,7 +232,8 @@ class UnityTestCase(AutopilotTestCase):
217232 def _upstart_reset_env(self, key, value):
218233 logger.info("Resetting upstart env %s to %s", key, value)
219234 if value is None:
220− subprocess.call(["/sbin/initctl", "unset-env", key], stderr=subprocess.STDOUT)
235+ subprocess.call(
236+ ["/sbin/initctl", "unset-env", key], stderr=subprocess.STDOUT)
221237 else:
222238 subprocess.call([
223239 "/sbin/initctl",
@@ -244,9 +260,13 @@ class UnityTestCase(AutopilotTestCase):
244260 self._setup_extra_mock_environment_patch()
245261
246262 # FIXME: we shouldn't be doing this
247− # $MIR_SOCKET, fallback to $XDG_RUNTIME_DIR/mir_socket and /tmp/mir_socket as last resort
263+ # $MIR_SOCKET, fallback to $XDG_RUNTIME_DIR/mir_socket and
264+ # /tmp/mir_socket as last resort
248265 try:
249− os.unlink(os.getenv('MIR_SOCKET', os.path.join(os.getenv('XDG_RUNTIME_DIR', "/tmp"), "mir_socket")))
266+ os.unlink(
267+ os.getenv('MIR_SOCKET',
268+ os.path.join(os.getenv('XDG_RUNTIME_DIR', "/tmp"),
269+ "mir_socket")))
250270 except OSError:
251271 pass
252272 try:
@@ -281,8 +301,8 @@ class UnityTestCase(AutopilotTestCase):
281301 "unity8",
282302 binary_arg,
283303 extra_args
284− ] + ["%s=%s" % (k,v) for k,v in self._environment.iteritems()],
285− stderr=subprocess.STDOUT)
304+ ] + ["%s=%s" % (k, v) for k, v in self._environment.iteritems()],
305+ stderr=subprocess.STDOUT)
286306
287307 self.addCleanup(self._cleanup_launching_upstart_unity)
288308
@@ -296,7 +316,8 @@ class UnityTestCase(AutopilotTestCase):
296316 def _cleanup_launching_upstart_unity(self):
297317 logger.info("Stopping unity")
298318 try:
299− subprocess.check_output(["/sbin/initctl", "stop", "unity8"], stderr=subprocess.STDOUT)
319+ subprocess.check_output(
320+ ["/sbin/initctl", "stop", "unity8"], stderr=subprocess.STDOUT)
300321 except subprocess.CalledProcessError:
301322 logger.warning("Appears unity was already stopped!")
302323
@@ -367,7 +388,6 @@ class UnityTestCase(AutopilotTestCase):
367388
368389 def get_dash(self):
369390 dash = self._proxy.select_single(Dash)
370− self.assertThat(dash, NotEquals(None))
371391 return dash
372392
373393 @property
tests/autopilot/unity8/shell/tests/test_notifications.py+43−43
@@ -45,7 +45,7 @@ class NotificationsBase(UnityTestCase):
4545 """Given an icons file name returns the full path (either system or
4646 source tree.
4747
48− Consider the graphics directory as root so for example (runnign tests
48+ Consider the graphics directory as root so for example (running tests
4949 from installed unity8-autopilot package):
5050 >>> self.get_icon_path('clock.png')
5151 /usr/share/unity8/graphics/clock.png
@@ -63,7 +63,7 @@ class NotificationsBase(UnityTestCase):
6363
6464 def _get_notifications_list(self):
6565 main_view = self.main_window.get_qml_view()
66− return main_view.select_single(
66+ return main_view.wait_select_single(
6767 "QQuickListView",
6868 objectName='notificationList'
6969 )
@@ -145,8 +145,8 @@ class InteractiveNotificationBase(NotificationsBase):
145145 hints,
146146 )
147147
148− get_notification = lambda: notify_list.select_single('Notification', objectName='notification1')
149− self.assertThat(get_notification, Eventually(NotEquals(None)))
148+ get_notification = lambda: notify_list.wait_select_single(
149+ 'Notification', objectName='notification1')
150150 notification = get_notification()
151151
152152 self.touch.tap_object(
@@ -156,7 +156,8 @@ class InteractiveNotificationBase(NotificationsBase):
156156 self.assert_notification_action_id_was_called('action_id')
157157
158158 def test_sd_incoming_call(self):
159− """Rejecting a call should make notification expand and offer more options."""
159+ """Rejecting a call should make notification expand and
160+ offer more options."""
160161 self.launch_unity()
161162 greeter = self.main_window.get_greeter()
162163 greeter.swipe()
@@ -191,8 +192,8 @@ class InteractiveNotificationBase(NotificationsBase):
191192 hints
192193 )
193194
194− get_notification = lambda: notify_list.select_single('Notification', objectName='notification1')
195− self.assertThat(get_notification, Eventually(NotEquals(None)))
195+ get_notification = lambda: notify_list.wait_select_single(
196+ 'Notification', objectName='notification1')
196197 notification = get_notification()
197198 self._assert_notification(notification, None, None, True, True, 1.0)
198199 initial_height = notification.height
@@ -200,8 +201,10 @@ class InteractiveNotificationBase(NotificationsBase):
200201 self.assertThat(
201202 notification.height,
202203 Eventually(Equals(initial_height +
203− 3 * notification.select_single(objectName="buttonColumn").spacing +
204− 3 * notification.select_single(objectName="button4").height)))
204+ 3 * notification.select_single(
205+ objectName="buttonColumn").spacing +
206+ 3 * notification.select_single(
207+ objectName="button4").height)))
205208 self.touch.tap_object(notification.select_single(objectName="button4"))
206209 self.assert_notification_action_id_was_called("action_decline_4")
207210
@@ -360,13 +363,13 @@ class EphemeralNotificationsTests(NotificationsBase):
360363
361364 notification.show()
362365
363− get_notification = lambda: notify_list.select_single('Notification', objectName='notification1')
364− self.assertThat(get_notification, Eventually(NotEquals(None)))
365− notification = get_notification()
366− self._assert_notification(notification, summary, body, True, True, 1.0)
366+ notification = lambda: notify_list.wait_select_single(
367+ 'Notification', objectName='notification1')
368+ self._assert_notification(notification(), summary, body, True, True, 1.0)
367369
368370 def test_icon_summary(self):
369− """Notification must display the expected summary and secondary icon."""
371+ """Notification must display the expected summary and secondary
372+ icon."""
370373 self.launch_unity()
371374 greeter = self.main_window.get_greeter()
372375 greeter.swipe()
@@ -391,11 +394,11 @@ class EphemeralNotificationsTests(NotificationsBase):
391394
392395 notification.show()
393396
394− get_notification = lambda: notify_list.select_single('Notification', objectName='notification1')
395− self.assertThat(get_notification, Eventually(NotEquals(None)))
396− notification = get_notification()
397+ notification = lambda: notify_list.wait_select_single(
398+ 'Notification', objectName='notification1')
399+
397400 self._assert_notification(
398− notification,
401+ notification(),
399402 summary,
400403 None,
401404 False,
@@ -404,7 +407,8 @@ class EphemeralNotificationsTests(NotificationsBase):
404407 )
405408
406409 def test_urgency_order(self):
407− """Notifications must be displayed in order according to their urgency."""
410+ """Notifications must be displayed in order according to their
411+ urgency."""
408412 self.launch_unity()
409413 greeter = self.main_window.get_greeter()
410414 greeter.swipe()
@@ -448,11 +452,10 @@ class EphemeralNotificationsTests(NotificationsBase):
448452 )
449453 notification_critical.show()
450454
451− get_notification = lambda: notify_list.select_single(
455+ get_notification = lambda: notify_list.wait_select_single(
452456 'Notification',
453457 summary=summary_critical
454458 )
455− self.assertThat(get_notification, Eventually(NotEquals(None)))
456459
457460 notification = get_notification()
458461 self._assert_notification(
@@ -464,11 +467,10 @@ class EphemeralNotificationsTests(NotificationsBase):
464467 1.0
465468 )
466469
467− get_normal_notification = lambda: notify_list.select_single(
470+ get_normal_notification = lambda: notify_list.wait_select_single(
468471 'Notification',
469472 summary=summary_normal
470473 )
471− self.assertThat(get_normal_notification, Eventually(NotEquals(None)))
472474 notification = get_normal_notification()
473475 self._assert_notification(
474476 notification,
@@ -479,11 +481,10 @@ class EphemeralNotificationsTests(NotificationsBase):
479481 1.0
480482 )
481483
482− get_low_notification = lambda: notify_list.select_single(
484+ get_low_notification = lambda: notify_list.wait_select_single(
483485 'Notification',
484486 summary=summary_low
485487 )
486− self.assertThat(get_low_notification, Eventually(NotEquals(None)))
487488 notification = get_low_notification()
488489 self._assert_notification(
489490 notification,
@@ -508,9 +509,8 @@ class EphemeralNotificationsTests(NotificationsBase):
508509 notification = self._create_ephemeral_notification(summary, body)
509510 notification.show()
510511
511− get_notification = lambda: notify_list.select_single('Notification', objectName='notification1')
512− self.assertThat(get_notification, Eventually(NotEquals(None)))
513− notification = get_notification()
512+ notification = notify_list.wait_select_single(
513+ 'Notification', objectName='notification1')
514514 self._assert_notification(
515515 notification,
516516 summary,
@@ -533,14 +533,14 @@ class EphemeralNotificationsTests(NotificationsBase):
533533 notification = self._create_ephemeral_notification(summary)
534534 notification.show()
535535
536− get_notification = lambda: notify_list.select_single('Notification', objectName='notification1')
537− self.assertThat(get_notification, Eventually(NotEquals(None)))
538− notification = get_notification()
536+ notification = notify_list.wait_select_single(
537+ 'Notification', objectName='notification1')
539538
540539 self._assert_notification(notification, summary, '', False, False, 1.0)
541540
542541 def test_update_notification_same_layout(self):
543− """Notification must allow updating its contents while being displayed."""
542+ """Notification must allow updating its contents while being
543+ displayed."""
544544 self.launch_unity()
545545 greeter = self.main_window.get_greeter()
546546 greeter.swipe()
@@ -558,8 +558,8 @@ class EphemeralNotificationsTests(NotificationsBase):
558558 )
559559 notification.show()
560560
561− get_notification = lambda: notify_list.select_single('Notification', summary=summary)
562− self.assertThat(get_notification, Eventually(NotEquals(None)))
561+ get_notification = lambda: notify_list.wait_select_single(
562+ 'Notification', summary=summary)
563563 self._assert_notification(
564564 get_notification(),
565565 summary,
@@ -575,11 +575,11 @@ class EphemeralNotificationsTests(NotificationsBase):
575575 icon_path = self._get_icon_path('avatars/amanda.png')
576576 notification.update(summary, body, icon_path)
577577 notification.show()
578− self.assertThat(get_notification, Eventually(NotEquals(None)))
579578 self._assert_notification(get_notification(), summary, body)
580579
581580 def test_update_notification_layout_change(self):
582− """Notification must allow updating its contents and layout while being displayed."""
581+ """Notification must allow updating its contents and layout while
582+ being displayed."""
583583 self.launch_unity()
584584 greeter = self.main_window.get_greeter()
585585 greeter.swipe()
@@ -603,8 +603,8 @@ class EphemeralNotificationsTests(NotificationsBase):
603603 )
604604 notification.show()
605605
606− get_notification = lambda: notify_list.select_single('Notification', objectName='notification1')
607− self.assertThat(get_notification, Eventually(NotEquals(None)))
606+ get_notification = lambda: notify_list.wait_select_single(
607+ 'Notification', objectName='notification1')
608608 self._assert_notification(
609609 get_notification(),
610610 summary,
@@ -645,8 +645,8 @@ class EphemeralNotificationsTests(NotificationsBase):
645645
646646 notification.show()
647647
648− get_notification = lambda: notify_list.select_single('Notification', objectName='notification1')
649− self.assertThat(get_notification, Eventually(NotEquals(None)))
648+ get_notification = lambda: notify_list.wait_select_single(
649+ 'Notification', objectName='notification1')
650650 notification = get_notification()
651651 self._assert_notification(
652652 notification,
@@ -662,7 +662,8 @@ class EphemeralNotificationsTests(NotificationsBase):
662662 'Did you watch the air-race in Oshkosh last week?',
663663 'Phil owned the place like no one before him!',
664664 'Did really everything in the race work according to regulations?',
665− 'Somehow I think to remember Burt Williams did cut corners and was not punished for this.',
665+ 'Somehow I think to remember Burt Williams did cut corners and '
666+ 'was not punished for this.',
666667 'Hopefully the referees will watch the videos of the race.',
667668 'Burt could get fined with US$ 50000 for that rule-violation :)'
668669 ]
@@ -677,11 +678,10 @@ class EphemeralNotificationsTests(NotificationsBase):
677678 hints=[('x-canonical-append', 'true')]
678679 )
679680 notification.show()
680− get_notification = lambda: notify_list.select_single(
681+ get_notification = lambda: notify_list.wait_select_single(
681682 'Notification',
682683 objectName='notification1'
683684 )
684− self.assertThat(get_notification, Eventually(NotEquals(None)))
685685 notification = get_notification()
686686 self._assert_notification(
687687 notification,