← Back to team overview

kubuntu-council team mailing list archive

[Merge] ~waveform/ubuntu-manual-tests:pi-desktop-tests into ubuntu-manual-tests:master

 

Dave Jones has proposed merging ~waveform/ubuntu-manual-tests:pi-desktop-tests into ubuntu-manual-tests:master.

Requested reviews:
  Ubuntu Testcase Admins (ubuntu-testcase)

For more details, see:
https://code.launchpad.net/~waveform/ubuntu-manual-tests/+git/ubuntu-manual-tests/+merge/414400

Add tests for the Raspberry Pi desktop images
-- 
Your team Ubuntu Testcase Admins is requested to review the proposed merge of ~waveform/ubuntu-manual-tests:pi-desktop-tests into ubuntu-manual-tests:master.
diff --git a/definitions/pi_desktop_cases.xml b/definitions/pi_desktop_cases.xml
new file mode 100644
index 0000000..eb40b56
--- /dev/null
+++ b/definitions/pi_desktop_cases.xml
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<!-- See TEMPLATE.xml for an explanation of this file layout -->
+
+<ut:configuration xmlns:ut="urn:com:ubuntu:tests">
+  <ut:template>
+    <p>This test case is to be carried out on a <ut:var name="model" />.</p>
+    <p>Follow the installation steps at <a
+      href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>
+    </p>
+    <ut:var name="post-install" />
+    <dl>
+      <ut:tests />
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a
+      href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  </ut:template>
+
+  <ut:define name="post-install"></ut:define>
+
+  <ut:test id="startup-splash">
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  </ut:test>
+
+  <ut:test id="startup-sound">
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  </ut:test>
+
+  <ut:test id="startup-timezone">
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  </ut:test>
+
+  <ut:test id="startup-identity">
+    <dt>
+      Input your initial user details and password 
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  </ut:test>
+
+  <ut:test id="flash-kernel">
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  </ut:test>
+
+  <ut:test id="reboot">
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  </ut:test>
+
+  <ut:test id="shutdown">
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  </ut:test>
+
+  <ut:test id="usb-file-transfer">
+    <dt>
+      Perform a large (300-600MB) file copy to USB storage
+      <ul>
+        <li>Generate a large (500MB) file: <code>dd if=/dev/urandom of=rubbish
+          bs=1M count=500</code></li>
+        <li>Insert a USB stick (appropriately sized) into a spare USB port</li>
+        <li>Make a mount directory: <code>sudo mkdir /mnt/stick</code></li>
+        <li>Mount the stick: <code>sudo mount /dev/sda1 /mnt/stick</code>
+          (modify mount-point as necessary; check <code>sudo dmesg</code>
+          output if unsure)</li>
+        <li>Copy the file: <code>sudo cp rubbish /mnt/stick/</code></li>
+        <li>Unmount the stick: <code>sudo umount /mnt/stick</code></li>
+        <li>Remove the stick from the USB port</li>
+        <li>Re-insert the stick into the USB port</li>
+        <li>Re-mount the stick: <code>sudo mount /dev/sda1 /mnt/stick</code>
+          (again, adjust mount-point as necessary)</li>
+        <li>Compare the copied file to that on the stick: <code>cmp rubbish
+          /mnt/stick/rubbish</code></li>
+      </ul>
+    </dt>
+    <dd>
+      <code>cmp</code> returns 0 and outputs nothing indicating the files are
+      identical
+    </dd>
+  </ut:test>
+
+  <ut:test id="ram-free">
+    <dt>
+      Click the power icon at the top right of the screen, select Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported &quot;Memory&quot; is consistent with a <ut:var name="model" />.
+      It should be in the region of <ut:var name="mem" />.
+    </dd>
+  </ut:test>
+
+  <ut:test id="dual-monitor">
+    <dt>
+      Boot with a monitor attached to both HDMI ports
+    </dt>
+    <dd>
+      Verify that you see output on both monitors
+    </dd>
+  </ut:test>
+
+  <ut:test id="ethernet">
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the <ut:var
+           name="intf" /> interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The &quot;<ut:var name="intf" />&quot; interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  </ut:test>
+
+  <ut:test id="wifi">
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Click the power icon at the top right of the screen</li>
+        <li>Select the WiFi entry from the menu and Select Network under that</li>
+        <li>Select your local WiFi network from the scan list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the <ut:var
+          name="intf" /> interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The &quot;<ut:var name="intf" />&quot; interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  </ut:test>
+
+  <ut:test id="www-video">
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  </ut:test>
+
+  <ut:test id="local-video">
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  </ut:test>
+
+  <ut:test id="lock-screen">
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  </ut:test>
+
+  <ut:case id="1744_RaspberryPi 4 2GB Desktop">
+    <ut:define name="model">Raspberry Pi 2 4GB</ut:define>
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">1.6-1.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1745_RaspberryPi 4 4GB Desktop">
+    <ut:define name="model">Raspberry Pi 4 4GB</ut:define>
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">3.6-3.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1746_RaspberryPi 4 8GB Desktop">
+    <ut:define name="model">Raspberry Pi 4 8GB</ut:define>
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">7.6-7.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1747_RaspberryPi 400 Desktop">
+    <ut:define name="model">Raspberry Pi 400</ut:define>
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">3.6-3.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1748_RaspberryPi CM4 2GB Desktop">
+    <ut:define name="model">Raspberry Pi Compute Module 4 2GB</ut:define>
+    <ut:define name="post-install">
+      <p>Before booting your CM4 with the new image, edit config.txt on the boot
+      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
+      line to ensure the USB ports on the IO board operate correctly</p>
+    </ut:define>
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">1.6-1.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1749_RaspberryPi CM4 4GB Desktop">
+    <ut:define name="model">Raspberry Pi Compute Module 4 4GB</ut:define>
+    <ut:define name="post-install">
+      <p>Before booting your CM4 with the new image, edit config.txt on the boot
+      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
+      line to ensure the USB ports on the IO board operate correctly</p>
+    </ut:define>
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">3.6-3.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1750_RaspberryPi CM4 8GB Desktop">
+    <ut:define name="model">Raspberry Pi Compute Module 4 8GB</ut:define>
+    <ut:define name="post-install">
+      <p>Before booting your CM4 with the new image, edit config.txt on the boot
+      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
+      line to ensure the USB ports on the IO board operate correctly</p>
+    </ut:define>
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">7.6-7.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+</ut:configuration>
diff --git a/definitions/pi_image_cases.xml b/definitions/pi_server_cases.xml
similarity index 100%
rename from definitions/pi_image_cases.xml
rename to definitions/pi_server_cases.xml
diff --git a/testcases/image/1711_RaspberryPi 4 2GB Post-install b/testcases/image/1711_RaspberryPi 4 2GB Post-install
index 3d1d98a..afcb489 100644
--- a/testcases/image/1711_RaspberryPi 4 2GB Post-install
+++ b/testcases/image/1711_RaspberryPi 4 2GB Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1719_RaspberryPi 4 4GB Post-install b/testcases/image/1719_RaspberryPi 4 4GB Post-install
index 2687249..612ca3f 100644
--- a/testcases/image/1719_RaspberryPi 4 4GB Post-install
+++ b/testcases/image/1719_RaspberryPi 4 4GB Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1720_RaspberryPi 4 8GB Post-install b/testcases/image/1720_RaspberryPi 4 8GB Post-install
index 4c2f4c7..91fd96d 100644
--- a/testcases/image/1720_RaspberryPi 4 8GB Post-install
+++ b/testcases/image/1720_RaspberryPi 4 8GB Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1721_RaspberryPi 3B+ Post-install b/testcases/image/1721_RaspberryPi 3B+ Post-install
index 64f3563..9cbd24a 100644
--- a/testcases/image/1721_RaspberryPi 3B+ Post-install
+++ b/testcases/image/1721_RaspberryPi 3B+ Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1722_RaspberryPi 3B Post-install b/testcases/image/1722_RaspberryPi 3B Post-install
index f854d38..61930a7 100644
--- a/testcases/image/1722_RaspberryPi 3B Post-install
+++ b/testcases/image/1722_RaspberryPi 3B Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1723_RaspberryPi 3A+ Post-install b/testcases/image/1723_RaspberryPi 3A+ Post-install
index 9cccff8..92be49d 100644
--- a/testcases/image/1723_RaspberryPi 3A+ Post-install
+++ b/testcases/image/1723_RaspberryPi 3A+ Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1724_RaspberryPi 2 Post-install b/testcases/image/1724_RaspberryPi 2 Post-install
index 093024e..9db64a7 100644
--- a/testcases/image/1724_RaspberryPi 2 Post-install
+++ b/testcases/image/1724_RaspberryPi 2 Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1725_RaspberryPi CM3 Post-install b/testcases/image/1725_RaspberryPi CM3 Post-install
index ceacc25..b2f20cd 100644
--- a/testcases/image/1725_RaspberryPi CM3 Post-install
+++ b/testcases/image/1725_RaspberryPi CM3 Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1726_RaspberryPi CM3+ Post-install b/testcases/image/1726_RaspberryPi CM3+ Post-install
index 923ee2c..ef1eb17 100644
--- a/testcases/image/1726_RaspberryPi CM3+ Post-install
+++ b/testcases/image/1726_RaspberryPi CM3+ Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1727_RaspberryPi CM3+ Lite Post-install b/testcases/image/1727_RaspberryPi CM3+ Lite Post-install
index cd562ed..01a05db 100644
--- a/testcases/image/1727_RaspberryPi CM3+ Lite Post-install
+++ b/testcases/image/1727_RaspberryPi CM3+ Lite Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1740_RaspberryPi 400 Post-install b/testcases/image/1740_RaspberryPi 400 Post-install
index 9859df7..0638f35 100644
--- a/testcases/image/1740_RaspberryPi 400 Post-install
+++ b/testcases/image/1740_RaspberryPi 400 Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     
diff --git a/testcases/image/1741_RaspberryPi CM4 2GB Post-install b/testcases/image/1741_RaspberryPi CM4 2GB Post-install
index 59a999d..ed23c97 100644
--- a/testcases/image/1741_RaspberryPi CM4 2GB Post-install
+++ b/testcases/image/1741_RaspberryPi CM4 2GB Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     <p>This test case is to be carried out on a Raspberry Pi Compute Module 4 2GB.</p>
diff --git a/testcases/image/1742_RaspberryPi CM4 4GB Post-install b/testcases/image/1742_RaspberryPi CM4 4GB Post-install
index 8c3f53d..c1a4c32 100644
--- a/testcases/image/1742_RaspberryPi CM4 4GB Post-install
+++ b/testcases/image/1742_RaspberryPi CM4 4GB Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     <p>This test case is to be carried out on a Raspberry Pi Compute Module 4 4GB.</p>
diff --git a/testcases/image/1743_RaspberryPi CM4 8GB Post-install b/testcases/image/1743_RaspberryPi CM4 8GB Post-install
index 2b0f1f0..5adc4d7 100644
--- a/testcases/image/1743_RaspberryPi CM4 8GB Post-install
+++ b/testcases/image/1743_RaspberryPi CM4 8GB Post-install
@@ -1,6 +1,6 @@
 <!-- Please do not edit this file directly; it was generated with the
      tools/test_case_gen script using the following configuration as input:
-     tools/pi_image_cases.xml
+     definitions/pi_server_cases.xml
 -->
 
     <p>This test case is to be carried out on a Raspberry Pi Compute Module 4 8GB.</p>
diff --git a/testcases/image/1744_RaspberryPi 4 2GB Desktop b/testcases/image/1744_RaspberryPi 4 2GB Desktop
new file mode 100644
index 0000000..cb7b1dc
--- /dev/null
+++ b/testcases/image/1744_RaspberryPi 4 2GB Desktop
@@ -0,0 +1,166 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 2 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password 
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, select Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 2 4GB.
+      It should be in the region of 1.6-1.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Click the power icon at the top right of the screen</li>
+        <li>Select the WiFi entry from the menu and Select Network under that</li>
+        <li>Select your local WiFi network from the scan list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1745_RaspberryPi 4 4GB Desktop b/testcases/image/1745_RaspberryPi 4 4GB Desktop
new file mode 100644
index 0000000..786598d
--- /dev/null
+++ b/testcases/image/1745_RaspberryPi 4 4GB Desktop
@@ -0,0 +1,166 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 4 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password 
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, select Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 4 4GB.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Click the power icon at the top right of the screen</li>
+        <li>Select the WiFi entry from the menu and Select Network under that</li>
+        <li>Select your local WiFi network from the scan list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1746_RaspberryPi 4 8GB Desktop b/testcases/image/1746_RaspberryPi 4 8GB Desktop
new file mode 100644
index 0000000..9700884
--- /dev/null
+++ b/testcases/image/1746_RaspberryPi 4 8GB Desktop
@@ -0,0 +1,166 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 4 8GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password 
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, select Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 4 8GB.
+      It should be in the region of 7.6-7.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Click the power icon at the top right of the screen</li>
+        <li>Select the WiFi entry from the menu and Select Network under that</li>
+        <li>Select your local WiFi network from the scan list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1747_RaspberryPi 400 Desktop b/testcases/image/1747_RaspberryPi 400 Desktop
new file mode 100644
index 0000000..b4945a6
--- /dev/null
+++ b/testcases/image/1747_RaspberryPi 400 Desktop
@@ -0,0 +1,166 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 400.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password 
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, select Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 400.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Click the power icon at the top right of the screen</li>
+        <li>Select the WiFi entry from the menu and Select Network under that</li>
+        <li>Select your local WiFi network from the scan list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1748_RaspberryPi CM4 2GB Desktop b/testcases/image/1748_RaspberryPi CM4 2GB Desktop
new file mode 100644
index 0000000..ac88a4f
--- /dev/null
+++ b/testcases/image/1748_RaspberryPi CM4 2GB Desktop
@@ -0,0 +1,170 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     definitions/pi_desktop_cases.xml
+-->
+
+    <p>This test case is to be carried out on a Raspberry Pi Compute Module 4 2GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>
+    </p>
+    
+      <p>Before booting your CM4 with the new image, edit config.txt on the boot
+      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
+      line to ensure the USB ports on the IO board operate correctly</p>
+    
+    <dl>
+      
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password 
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, select Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi Compute Module 4 2GB.
+      It should be in the region of 1.6-1.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Click the power icon at the top right of the screen</li>
+        <li>Select the WiFi entry from the menu and Select Network under that</li>
+        <li>Select your local WiFi network from the scan list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1749_RaspberryPi CM4 4GB Desktop b/testcases/image/1749_RaspberryPi CM4 4GB Desktop
new file mode 100644
index 0000000..2fedcf9
--- /dev/null
+++ b/testcases/image/1749_RaspberryPi CM4 4GB Desktop
@@ -0,0 +1,170 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     definitions/pi_desktop_cases.xml
+-->
+
+    <p>This test case is to be carried out on a Raspberry Pi Compute Module 4 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>
+    </p>
+    
+      <p>Before booting your CM4 with the new image, edit config.txt on the boot
+      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
+      line to ensure the USB ports on the IO board operate correctly</p>
+    
+    <dl>
+      
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password 
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, select Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi Compute Module 4 4GB.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Click the power icon at the top right of the screen</li>
+        <li>Select the WiFi entry from the menu and Select Network under that</li>
+        <li>Select your local WiFi network from the scan list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1750_RaspberryPi CM4 8GB Desktop b/testcases/image/1750_RaspberryPi CM4 8GB Desktop
new file mode 100644
index 0000000..716f664
--- /dev/null
+++ b/testcases/image/1750_RaspberryPi CM4 8GB Desktop
@@ -0,0 +1,170 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     definitions/pi_desktop_cases.xml
+-->
+
+    <p>This test case is to be carried out on a Raspberry Pi Compute Module 4 8GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>
+    </p>
+    
+      <p>Before booting your CM4 with the new image, edit config.txt on the boot
+      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
+      line to ensure the USB ports on the IO board operate correctly</p>
+    
+    <dl>
+      
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password 
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, select Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi Compute Module 4 8GB.
+      It should be in the region of 7.6-7.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Click the power icon at the top right of the screen</li>
+        <li>Select the WiFi entry from the menu and Select Network under that</li>
+        <li>Select your local WiFi network from the scan list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file

Follow ups