From aab718f917b908c8c756952ae069e01108312e91 Mon Sep 17 00:00:00 2001 From: Daniel Thompson Date: Tue, 12 Jan 2021 22:02:31 +0000 Subject: [PATCH] simulator: test_qa: Add some simply QA tests for app screenshots Add tests to make sure every app has a screenshot... and fix the problems picked up by the new tests! Signed-off-by: Daniel Thompson --- README.rst | 27 ++++++++++++++++++--------- res/SoftwareApp.png | Bin 0 -> 7043 bytes wasp/boards/simulator/test_qa.py | 20 ++++++++++++++++++++ 3 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 res/SoftwareApp.png create mode 100644 wasp/boards/simulator/test_qa.py diff --git a/README.rst b/README.rst index 501b83c..7e6e8e8 100644 --- a/README.rst +++ b/README.rst @@ -132,7 +132,7 @@ PineTime: :width: 233 Screenshots of the built in applications running on the wasp-os -simulator (the "blank" screen is the torch application): +simulator: .. image:: res/Bootloader.png :alt: Bootloader splash screen overlaid on the simulator watch art @@ -158,22 +158,27 @@ simulator (the "blank" screen is the torch application): :alt: Application launcher running on the wasp-os simulator :width: 179 -.. image:: res/SelfTestApp.png - :alt: Self test application running a rendering benchmark on the simulator - :width: 179 - .. image:: res/SettingsApp.png :alt: Settings application running on the wasp-os simulator :width: 179 +.. image:: res/SoftwareApp.png + :alt: Software selection app running on the wasp-os simulator + :width: 179 + + +wasp-os also contains a library of additional applications for you to choose. +These are disabled by default but can be easily enabled using the Software +application (and the "blank" white screen is a torch application): + +.. image:: res/SelfTestApp.png + :alt: Self test application running a rendering benchmark on the simulator + :width: 179 + .. image:: res/TorchApp.png :alt: Torch application running on the wasp-os simulator :width: 179 -wasp-os also contains a library of additional applications for you to choose. -These are disabled by default but can be easily enabled by adding them -using one of the techniques is the Application Writer's guide. - .. image:: res/ChronoApp.png :alt: Analogue clock application running in the wasp-os simulator :width: 179 @@ -190,6 +195,10 @@ using one of the techniques is the Application Writer's guide. :alt: Game of Life running in the wasp-os simulator :width: 179 +.. image:: res/AlarmApp.png + :alt: Alarm clock application running in the wasp-os simulator + :width: 179 + .. image:: res/MusicApp.png :alt: Music Player running in the wasp-os simulator :width: 179 diff --git a/res/SoftwareApp.png b/res/SoftwareApp.png new file mode 100644 index 0000000000000000000000000000000000000000..0e03a34708e30f73637ab90e374b63728e0bfd5e GIT binary patch literal 7043 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 G_5T1Bl05$a literal 0 HcmV?d00001 diff --git a/wasp/boards/simulator/test_qa.py b/wasp/boards/simulator/test_qa.py new file mode 100644 index 0000000..206e505 --- /dev/null +++ b/wasp/boards/simulator/test_qa.py @@ -0,0 +1,20 @@ +import pytest +import wasp +import os + +EXCLUDE = ('Notifications', 'Template', 'Demo') + +def test_screenshot(constructor): + if constructor.NAME in EXCLUDE: + return + fname = f'res/{constructor.NAME}App.png'.replace(' ', '') + assert os.path.exists(fname) + +def test_screenshot_README(constructor): + if constructor.NAME in EXCLUDE: + return + fname = f'res/{constructor.NAME}App.png'.replace(' ', '') + + with open('README.rst') as f: + readme = f.read() + assert fname in readme