Ubuntu Certified Docking Stations Coverage for 22.04 LTS¶
Introduction¶
Although docking stations are currently out of scope of the general Ubuntu Desktop Certified Hardware programme at Canonical, we have an extension to the programme to enable and certify a particular docking station with an already Ubuntu certified system. This programme does not certify a particular docking station to work with all Ubuntu certified systems, nor will a docking station be tested and/or certified in isolation, but always as part of the certification of a full system.
This document lists the coverage for certification of docking stations for Ubuntu Desktop 22.04 LTS. This coverage will remain as it is for Ubuntu Desktop 22.04 LTS through the life cycle of Ubuntu Desktop 22.04 LTS.
For each test job, one of the following certification statuses is specified:
- Blocking
Features that are required for certification. If any of the blocking tests fails, the certification will fail.
- Non-blocking
Features that are tested but not mandatory for certification. Failure in non-blocking tests will not prevent certification. However, a note will be added to the certificate to inform potential customers or users.
Note
Only categories of hardware are tested and not specific types of hardware. For example, tests are run to verify USB controllers work, but the type of peripheral(s) used during those tests are not specified.
Coverage is flexible based on customer requirements (for example, if a device’s use cases don’t require LEDs, then LEDs can be non-blocking)
Certain test jobs are designed to validate specific hardware capabilities, such as camera and audio playback functionality. To ensure that the required hardware capabilities are present and properly recognised on the machine under test, these features are explicitly defined in manifest entries and linked to the relevant test jobs. This prevents test jobs from being skipped due to system deficiencies in automated detection.
Full test descriptions can be found in Canonical certification site for partners:
https://certification.canonical.com
Note
At the time of this writing, only wired docks are supported. Wireless docking requires functionality that is not known to be supported by IHVs.
Note
This also does not cover “smart” docks, i.e. docks that contain additional components (like graphics adapters, etc.).
Main testing flow¶
Once the connected components like DP monitors, HDMI monitors, and ethernet cables have been plugged, they will remain plugged in throughout testing. However, for user-removable components such as USB drives or Thunderbolt storage devices, hotplugging functionality will be tested. The testing process will follow a flow similar to:
Plug all the components into the docking station
Unplug the storage when meet the storage test
Start storage testing(Insert, auto, remove)
Plug it back when finish the storage test
dock-cert-full¶
Note
The certification tests presented in this document are validated by Checkbox version 7.0.0.dev58.
Blocking¶
Docking station audio tests¶
Output sound needs to be undistorted between 0%-100%. Output lines tested:
3.5mm headphones
HDMI audio output
DisplayPort audio output
Input needs to be recorded undistorted between 0%-100%. Input lines tested:
3.5mm microphone
The following test units are covered in this category:
dock/all-hotplug-audio-alsa-record-playback-externalExternal microphone plugged to the dock to record sound test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that recording sound using an external microphone works correctly. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Did you hear your speech played back? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_audio_capture == ‘True’ package.name == ‘alsa-base’ package.name == ‘gstreamer1.0-plugins-good’ or package.name == ‘gstreamer0.10-plugins-good’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_audio_capture.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects a microphone being plugged in. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that headphones connector works correctly. (Skip this test if there is no headphone connector on the dock) |
| Steps: |
|
| Verification: | Did you hear a sound through the headphones and did the sound play without any distortion, clicks or other strange noises from your headphones? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name == ‘alsa-base’ package.name == ‘gir1.2-gst-plugins-base-0.10’ or package.name == ‘gir1.2-gst-plugins-base-1.0’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-hotplug-audio-speaker-headphone-plug-detectionHeadphones recognized when plugged to the dock test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects speakers or headphones being plugged in. (Skip this test if the dock does not have headphones connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test is to check if every external monitor on the dock can play sound. |
| Steps: |
|
| Verification: | Can every external monitor play sound? If no sound output, try: 1. Go to Settings > Sound > Output > Test > Try Front Left and Front Right. 2. Repeat Step 1 for each monitor. |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-init-audio-alsa-record-playback-externalExternal microphone plugged to the dock to record sound test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that recording sound using an external microphone works correctly. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Did you hear your speech played back? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_audio_capture == ‘True’ package.name == ‘alsa-base’ package.name == ‘gstreamer1.0-plugins-good’ or package.name == ‘gstreamer0.10-plugins-good’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_audio_capture.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects a microphone being plugged in. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that headphones connector works correctly. (Skip this test if there is no headphone connector on the dock) |
| Steps: |
|
| Verification: | Did you hear a sound through the headphones and did the sound play without any distortion, clicks or other strange noises from your headphones? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name == ‘alsa-base’ package.name == ‘gir1.2-gst-plugins-base-0.10’ or package.name == ‘gir1.2-gst-plugins-base-1.0’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-init-audio-speaker-headphone-plug-detectionHeadphones recognized when plugged to the dock test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects speakers or headphones being plugged in. (Skip this test if the dock does not have headphones connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test is to check if every external monitor on the dock can play sound. |
| Steps: |
|
| Verification: | Can every external monitor play sound? If no sound output, try: 1. Go to Settings > Sound > Output > Test > Try Front Left and Front Right. 2. Repeat Step 1 for each monitor. |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-poweroff-audio-alsa-record-playback-externalExternal microphone plugged to the dock to record sound test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that recording sound using an external microphone works correctly. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Did you hear your speech played back? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_audio_capture == ‘True’ package.name == ‘alsa-base’ package.name == ‘gstreamer1.0-plugins-good’ or package.name == ‘gstreamer0.10-plugins-good’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_audio_capture.dock/all-poweroff-audio-microphone-plug-detectionMicrophone recognized when plugged to the dock test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects a microphone being plugged in. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that headphones connector works correctly. (Skip this test if there is no headphone connector on the dock) |
| Steps: |
|
| Verification: | Did you hear a sound through the headphones and did the sound play without any distortion, clicks or other strange noises from your headphones? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name == ‘alsa-base’ package.name == ‘gir1.2-gst-plugins-base-0.10’ or package.name == ‘gir1.2-gst-plugins-base-1.0’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-poweroff-audio-speaker-headphone-plug-detectionHeadphones recognized when plugged to the dock test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects speakers or headphones being plugged in. (Skip this test if the dock does not have headphones connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test is to check if every external monitor on the dock can play sound. |
| Steps: |
|
| Verification: | Can every external monitor play sound? If no sound output, try: 1. Go to Settings > Sound > Output > Test > Try Front Left and Front Right. 2. Repeat Step 1 for each monitor. |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-reboot-audio-alsa-record-playback-externalExternal microphone plugged to the dock to record sound test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that recording sound using an external microphone works correctly. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Did you hear your speech played back? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_audio_capture == ‘True’ package.name == ‘alsa-base’ package.name == ‘gstreamer1.0-plugins-good’ or package.name == ‘gstreamer0.10-plugins-good’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_audio_capture.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects a microphone being plugged in. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that headphones connector works correctly. (Skip this test if there is no headphone connector on the dock) |
| Steps: |
|
| Verification: | Did you hear a sound through the headphones and did the sound play without any distortion, clicks or other strange noises from your headphones? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name == ‘alsa-base’ package.name == ‘gir1.2-gst-plugins-base-0.10’ or package.name == ‘gir1.2-gst-plugins-base-1.0’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-reboot-audio-speaker-headphone-plug-detectionHeadphones recognized when plugged to the dock test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects speakers or headphones being plugged in. (Skip this test if the dock does not have headphones connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test is to check if every external monitor on the dock can play sound. |
| Steps: |
|
| Verification: | Can every external monitor play sound? If no sound output, try: 1. Go to Settings > Sound > Output > Test > Try Front Left and Front Right. 2. Repeat Step 1 for each monitor. |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-suspend-audio-alsa-record-playback-externalExternal microphone plugged to the dock to record sound test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that recording sound using an external microphone works correctly. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Did you hear your speech played back? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_audio_capture == ‘True’ package.name == ‘alsa-base’ package.name == ‘gstreamer1.0-plugins-good’ or package.name == ‘gstreamer0.10-plugins-good’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_audio_capture.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects a microphone being plugged in. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that headphones connector works correctly. (Skip this test if there is no headphone connector on the dock) |
| Steps: |
|
| Verification: | Did you hear a sound through the headphones and did the sound play without any distortion, clicks or other strange noises from your headphones? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name == ‘alsa-base’ package.name == ‘gir1.2-gst-plugins-base-0.10’ or package.name == ‘gir1.2-gst-plugins-base-1.0’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-suspend-audio-speaker-headphone-plug-detectionHeadphones recognized when plugged to the dock test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects speakers or headphones being plugged in. (Skip this test if the dock does not have headphones connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.dock/all-suspend-hotplug-audio-alsa-record-playback-externalExternal microphone plugged to the dock to record sound test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that recording sound using an external microphone works correctly. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Did you hear your speech played back? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_audio_capture == ‘True’ package.name == ‘alsa-base’ package.name == ‘gstreamer1.0-plugins-good’ or package.name == ‘gstreamer0.10-plugins-good’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_audio_capture.dock/all-suspend-hotplug-audio-microphone-plug-detectionMicrophone recognized when plugged to the dock test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects a microphone being plugged in. (Skip this test if the dock does not have a microphone connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test will check that headphones connector works correctly. (Skip this test if there is no headphone connector on the dock) |
| Steps: |
|
| Verification: | Did you hear a sound through the headphones and did the sound play without any distortion, clicks or other strange noises from your headphones? |
| After-suspend: | True |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name == ‘alsa-base’ package.name == ‘gir1.2-gst-plugins-base-0.10’ or package.name == ‘gir1.2-gst-plugins-base-1.0’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.dock/all-suspend-hotplug-audio-speaker-headphone-plug-detectionHeadphones recognized when plugged to the dock test
| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | Check that system detects speakers or headphones being plugged in. (Skip this test if the dock does not have headphones connector) |
| Steps: |
|
| Verification: | Verification is automatic, no action is required. The test times out after 30 seconds (and fails in that case). |
| Plugin: | user-interact |
| Requires: | manifest.has_audio_playback == ‘True’ manifest.has_dock_headset == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback, has_dock_headset.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test is to check if every external monitor on the dock can play sound. |
| Steps: |
|
| Verification: | Can every external monitor play sound? If no sound output, try: 1. Go to Settings > Sound > Output > Test > Try Front Left and Front Right. 2. Repeat Step 1 for each monitor. |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.| Category ID: | dock-audio |
| Status: | Blocking |
| Purpose: | This test is to check if every external monitor on the dock can play sound. |
| Steps: |
|
| Verification: | Can every external monitor play sound? If no sound output, try: 1. Go to Settings > Sound > Output > Test > Try Front Left and Front Right. 2. Repeat Step 1 for each monitor. |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_audio_playback == ‘True’ package.name in [‘pulseaudio-utils’, ‘pipewire’] |
has_audio_playback.Docking station display tests¶
Multi-monitors should be supported following the specifications of the docking station and DUT. The amount of monitors and which ports are going to be used is not specified, it depends on the hardware limitation of the docking station and DUT.
The following test units are covered in this category:
| Category ID: | dock-display |
| Status: | Blocking |
| Purpose: | This test is to verify that multi-monitor output works using the dock. You will need multiple external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. |
| Steps: | Skip this test if your video card or the dock do not support multiple monitors. 1. If your dock provides more than one monitor outputs, connect multiple monitors. 2. Open the “Displays” tool (open the dash and search for “Displays”). 3. Configure your output to provide one desktop across all the monitors. 4. Open any application and drag its window from one monitor to the next. |
| Verification: | Was the stretched desktop displayed correctly across all the screens? |
| Plugin: | manual |
| Category ID: | dock-display |
| Status: | Blocking |
| Purpose: | This test is to verify that multi-monitor output works using the dock. You will need multiple external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. |
| Steps: | Skip this test if your video card or the dock do not support multiple monitors. 1. If your dock provides more than one monitor outputs, connect multiple monitors. 2. Open the “Displays” tool (open the dash and search for “Displays”). 3. Configure your output to provide one desktop across all the monitors. 4. Open any application and drag its window from one monitor to the next. |
| Verification: | Was the stretched desktop displayed correctly across all the screens? |
| Plugin: | manual |
| Category ID: | dock-display |
| Status: | Blocking |
| Purpose: | This test is to verify that multi-monitor output works using the dock. You will need multiple external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. |
| Steps: | Skip this test if your video card or the dock do not support multiple monitors. 1. If your dock provides more than one monitor outputs, connect multiple monitors. 2. Open the “Displays” tool (open the dash and search for “Displays”). 3. Configure your output to provide one desktop across all the monitors. 4. Open any application and drag its window from one monitor to the next. |
| Verification: | Was the stretched desktop displayed correctly across all the screens? |
| Plugin: | manual |
| Category ID: | dock-display |
| Status: | Blocking |
| Purpose: | This test is to verify that multi-monitor output works using the dock. You will need multiple external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. |
| Steps: | Skip this test if your video card or the dock do not support multiple monitors. 1. If your dock provides more than one monitor outputs, connect multiple monitors. 2. Open the “Displays” tool (open the dash and search for “Displays”). 3. Configure your output to provide one desktop across all the monitors. 4. Open any application and drag its window from one monitor to the next. |
| Verification: | Was the stretched desktop displayed correctly across all the screens? |
| Plugin: | manual |
| Category ID: | dock-display |
| Status: | Blocking |
| Purpose: | This test is to verify that multi-monitor output works using the dock. You will need multiple external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. |
| Steps: | Skip this test if your video card or the dock do not support multiple monitors. 1. If your dock provides more than one monitor outputs, connect multiple monitors. 2. Open the “Displays” tool (open the dash and search for “Displays”). 3. Configure your output to provide one desktop across all the monitors. 4. Open any application and drag its window from one monitor to the next. |
| Verification: | Was the stretched desktop displayed correctly across all the screens? |
| Plugin: | manual |
| Category ID: | dock-display |
| Status: | Blocking |
| Purpose: | This test is to verify that multi-monitor output works using the dock. You will need multiple external monitors to perform this test. Depends on the specification of the device to use 4K monitor or FHD monitor. |
| Steps: | Skip this test if your video card or the dock do not support multiple monitors. 1. If your dock provides more than one monitor outputs, connect multiple monitors. 2. Open the “Displays” tool (open the dash and search for “Displays”). 3. Configure your output to provide one desktop across all the monitors. 4. Open any application and drag its window from one monitor to the next. |
| Verification: | Was the stretched desktop displayed correctly across all the screens? |
| Plugin: | manual |
Docking station network tests¶
Ethernet (RJ-45 Network Jack). Connections are tested for functionality, but not for performance.
The following test units are covered in this category:
| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to detect and return information about available network controllers on the system under test. |
| Plugin: | shell |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Tests whether the system has a working Internet connection. |
| Steps: |
|
| Verification: | Was the test able to ping the network using the Ethernet connection? |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to see if we can sync local clock to an NTP server |
| Steps: |
|
| Verification: | Was the test able to synchronize system time using the Ethernet connection? |
| User: | root |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ (package.name == ‘ntpdate’ or package.name == ‘ntpsec-ntpdate’) |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to detect and return information about available network controllers on the system under test. |
| Plugin: | shell |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Tests whether the system has a working Internet connection. |
| Steps: |
|
| Verification: | Was the test able to ping the network using the Ethernet connection? |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to see if we can sync local clock to an NTP server |
| Steps: |
|
| Verification: | Was the test able to synchronize system time using the Ethernet connection? |
| User: | root |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ (package.name == ‘ntpdate’ or package.name == ‘ntpsec-ntpdate’) |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to detect and return information about available network controllers on the system under test. |
| Plugin: | shell |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Tests whether the system has a working Internet connection. |
| Steps: |
|
| Verification: | Was the test able to ping the network using the Ethernet connection? |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to see if we can sync local clock to an NTP server |
| Steps: |
|
| Verification: | Was the test able to synchronize system time using the Ethernet connection? |
| User: | root |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ (package.name == ‘ntpdate’ or package.name == ‘ntpsec-ntpdate’) |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to detect and return information about available network controllers on the system under test. |
| Plugin: | shell |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Tests whether the system has a working Internet connection. |
| Steps: |
|
| Verification: | Was the test able to ping the network using the Ethernet connection? |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to see if we can sync local clock to an NTP server |
| Steps: |
|
| Verification: | Was the test able to synchronize system time using the Ethernet connection? |
| User: | root |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ (package.name == ‘ntpdate’ or package.name == ‘ntpsec-ntpdate’) |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to detect and return information about available network controllers on the system under test. |
| Plugin: | shell |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to detect and return information about available network controllers on the system under test. |
| Plugin: | shell |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Tests whether the system has a working Internet connection. |
| Steps: |
|
| Verification: | Was the test able to ping the network using the Ethernet connection? |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to see if we can sync local clock to an NTP server |
| Steps: |
|
| Verification: | Was the test able to synchronize system time using the Ethernet connection? |
| User: | root |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ (package.name == ‘ntpdate’ or package.name == ‘ntpsec-ntpdate’) |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Tests whether the system has a working Internet connection. |
| Steps: |
|
| Verification: | Was the test able to ping the network using the Ethernet connection? |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ |
has_dock_ethernet_adapter.| Category ID: | dock-network |
| Status: | Blocking |
| Purpose: | Test to see if we can sync local clock to an NTP server |
| Steps: |
|
| Verification: | Was the test able to synchronize system time using the Ethernet connection? |
| User: | root |
| Plugin: | user-interact-verify |
| Requires: | manifest.has_dock_ethernet_adapter == ‘True’ (package.name == ‘ntpdate’ or package.name == ‘ntpsec-ntpdate’) |
has_dock_ethernet_adapter.Docking station tests¶
The following test units are covered in this category:
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test checks if the device is still working after hotplug. |
| Steps: |
|
| Verification: | Mark it Pass if you have hotplugged the docking station. The functionality will be verified through the following test cases. |
| Plugin: | manual |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a Thunderbolt3 HDD to the dock could be detected, then performs read/write operations on the attached Thunderbolt3 storage and checks if the removal of the Thunderbolt3 HDD can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | manifest.has_dock_thunderbolt3 == ‘True’ |
has_dock_thunderbolt3.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a usb-c storage to the dock could be detected, then performs read/write operations on the attached usb-c storage and checks if the removal of the usb-c storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ manifest.has_dock_usbc_data == ‘True’ |
has_dock_usbc_data.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a USB3 storage to the dock could be detected, then performs read/write operations on the attached USB3 storage and checks if the removal of the USB3 storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test is to set up the initial status for all I/O ports on the docking station. Note: Try to meet the limitations in the spec of the dock. If there’s no port as described below, you can just skip it. |
| Steps: |
|
| Verification: | Mark it Pass if you have connected all I/O ports as mentioned above. The functionality will be verified through the following test cases. |
| Plugin: | manual |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a Thunderbolt3 HDD to the dock could be detected, then performs read/write operations on the attached Thunderbolt3 storage and checks if the removal of the Thunderbolt3 HDD can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | manifest.has_dock_thunderbolt3 == ‘True’ |
has_dock_thunderbolt3.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a usb-c storage to the dock could be detected, then performs read/write operations on the attached usb-c storage and checks if the removal of the usb-c storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ manifest.has_dock_usbc_data == ‘True’ |
has_dock_usbc_data.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a USB3 storage to the dock could be detected, then performs read/write operations on the attached USB3 storage and checks if the removal of the USB3 storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test is to check if the device is still working after power-off. |
| Steps: |
|
| Verification: | Mark it Pass if you have powered off and powered on the system. The functionality will be verified through the following test cases. |
| Plugin: | manual |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a Thunderbolt3 HDD to the dock could be detected, then performs read/write operations on the attached Thunderbolt3 storage and checks if the removal of the Thunderbolt3 HDD can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | manifest.has_dock_thunderbolt3 == ‘True’ |
has_dock_thunderbolt3.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a usb-c storage to the dock could be detected, then performs read/write operations on the attached usb-c storage and checks if the removal of the usb-c storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ manifest.has_dock_usbc_data == ‘True’ |
has_dock_usbc_data.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a USB3 storage to the dock could be detected, then performs read/write operations on the attached USB3 storage and checks if the removal of the USB3 storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test is to check if the device is still working after reboot. |
| Steps: | Reboot the system. |
| Verification: | Mark it Pass if you have rebooted the system. The functionality will be verified through the following test cases. |
| Plugin: | manual |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a Thunderbolt3 HDD to the dock could be detected, then performs read/write operations on the attached Thunderbolt3 storage and checks if the removal of the Thunderbolt3 HDD can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | manifest.has_dock_thunderbolt3 == ‘True’ |
has_dock_thunderbolt3.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a usb-c storage to the dock could be detected, then performs read/write operations on the attached usb-c storage and checks if the removal of the usb-c storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ manifest.has_dock_usbc_data == ‘True’ |
has_dock_usbc_data.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a USB3 storage to the dock could be detected, then performs read/write operations on the attached USB3 storage and checks if the removal of the USB3 storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test is to check if the device is still functional after suspend. |
| Steps: |
|
| Verification: | Mark it as Pass if you have successfully suspended and resumed the system. The functionality will be verified through the following test cases. |
| Plugin: | manual |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test is to check if the device can resume automatically and remain functional after a hotplug event during suspend. |
| Steps: |
|
| Verification: | Mark it as Pass if the system can resume automatically when the dock is hotplugged during suspend. The functionality will be verified through the following test cases. |
| Plugin: | manual |
dock/all-suspend-hotplug-thunderbolt3-storage-manualThunderbolt3 storage insertion + read/write + removal
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a Thunderbolt3 HDD to the dock could be detected, then performs read/write operations on the attached Thunderbolt3 storage and checks if the removal of the Thunderbolt3 HDD can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | manifest.has_dock_thunderbolt3 == ‘True’ |
has_dock_thunderbolt3.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a usb-c storage to the dock could be detected, then performs read/write operations on the attached usb-c storage and checks if the removal of the usb-c storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ manifest.has_dock_usbc_data == ‘True’ |
has_dock_usbc_data.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a USB3 storage to the dock could be detected, then performs read/write operations on the attached USB3 storage and checks if the removal of the USB3 storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a Thunderbolt3 HDD to the dock could be detected, then performs read/write operations on the attached Thunderbolt3 storage and checks if the removal of the Thunderbolt3 HDD can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | manifest.has_dock_thunderbolt3 == ‘True’ |
has_dock_thunderbolt3.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a usb-c storage to the dock could be detected, then performs read/write operations on the attached usb-c storage and checks if the removal of the usb-c storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ manifest.has_dock_usbc_data == ‘True’ |
has_dock_usbc_data.| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test will check if the connection of a USB3 storage to the dock could be detected, then performs read/write operations on the attached USB3 storage and checks if the removal of the USB3 storage can be detected. |
| Steps: |
|
| Verification: | The verification of this test is automated. Do not change the automatically selected result. |
| After-suspend: | True |
| User: | root |
| Plugin: | user-interact |
| Requires: | usb.usb3 == ‘supported’ |
| Category ID: | dock |
| Status: | Blocking |
| Purpose: | This test is to ensure the system can detect and set up the dock correctly the first time. Please reset the OS before testing this test case again. |
| Steps: |
|
| Verification: | Mark it as Pass if the system can detect and set up the dock correctly. The functionality will be verified through the following test cases. |
| Plugin: | manual |
Manifest Entries¶
The following manifest entries are required for certification:
has_audio_captureAudio capture: Machine can record sound. (For example, a desktop PC probably requires a microphone connected to it)
| Value type: | bool |
| Prompt: | Does this machine have the following audio features? |
has_audio_playbackAudio playback: Machine can emit sound. (For example, a desktop PC probably requires speakers connected to it)
| Value type: | bool |
| Prompt: | Does this machine have the following audio features? |
| Value type: | bool |
| Prompt: | Does this dock has the following features? |
| Value type: | bool |
| Prompt: | Does this dock has the following features? |
| Value type: | bool |
| Prompt: | Does this dock has the following features? |