Run an end-to-end test

This guide provides instructions on how to run an end-to-end test for testing a Fuchsia product.

This guide uses the Fuchsia emulator (FEMU) to emulate a device that runs Fuchsia. As for the end-to-end test, the guide uses the screen_is_not_black end-to-end test.

The screen_is_not_black_no_basemgr_test end-to-end test reboots a device under test (DUT), waits 100 seconds, and takes a snapshot of the device’s screen. If the snapshot image is not a black screen, the test concludes that Fuchsia is successfully up and running on the device after reboot.

To run this end-to-end test, the steps are:

Prerequisites

Verify the following requirements:

Build a Fuchsia image to include the end-to-end test

Before you can run the screen_is_not_black_no_basemgr_test end-to-end test, you first need to build your Fuchsia image to include the test in the build artifacts:

  1. To add the end-to-end test, run the fx set command with the following --with option:

    fx set workstation.x64 --with //src/tests/end_to_end/screen_is_not_black:no_basemgr_test
    

    //src/tests/end_to_end/screen_is_not_black is a test directory in the Fuchsia source tree. The BUILD.gn file in this directory defines the test target to include the screen_is_not_black_no_basemgr_test end-to-end test in the build artifacts.

  2. Build your Fuchsia image:

    fx build
    

    When the fx build command completes, the build artifacts now include the screen_is_not_black_no_basemgr_test end-to-end test, which you can run from your host machine.

Start the emulator with the Fuchsia image

Start the emulator with your Fuchsia image and run a package repository server:

Note: The steps in this section assume that you don't have any terminals currently running FEMU or the fx serve command.

  1. Configure an IPv6 network for the emulator (you only need to do this once):

    sudo ip tuntap add dev qemu mode tap user $USER && sudo ifconfig qemu up
    
  2. In a new terminal, start the emulator:

    fx emu -N
    
  3. Set the emulator to be your device:

    fx set-device
    

    If you have multiple devices, select step-atom-yard-juicy (the emulator’s default device name), for example:

  4. In another new terminal, start a package repository server:

    fx serve
    

    Keep the fx serve command running as a package server for your device.

Run the end-to-end test

Run the screen_is_not_black_no_basemgr_test end-to-end test:

fx run-e2e-tests screen_is_not_black_no_basemgr_test

When the test passes, this fx command prints the following output in the end:

Saw a screen that is not black.

[FINE]: Running over ssh: killall sl4f.cmx
01:04 +1: All tests passed!


1 of 1 test passed

Run any end-to-end test

Use the fx run-e2e-tests command to run an end-to-end test from your host machine:

fx run-e2e-tests <TEST_NAME>

Some product configurations may include a set of end-to-end tests by default. However, if you want to run an end-to-end test that is not part of your product configuration, configure and build your Fuchsia image to include the specific test:

fx build

For example, the following command configures your Fuchsia image to include all the end-to-end tests in the //src/tests/end_to_end/perf test directory:

fx set workstation.qemu-x64 --with //src/tests/end_to_end/perf:test

Note: Some end-to-end tests can only run on specific product configurations.

For the list of all available end-to-end tests in the Fuchsia repository, see the //src/tests/end_to_end directory.