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 QEMU to emulate a device that runs Fuchsia. As for the end-to-end test, the guide uses the screen_is_not_black_test end-to-end test.

The screen_is_not_black_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 example end-to-end test:

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_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.qemu-x64 --with //src/tests/end_to_end/screen_is_not_black: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_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_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 newly built Fuchsia image and run a package repository server:

  1. In a new terminal, start the emulator:

    fx emu -N
    

    The fx emu command starts the emulator with a Fuchsia image from your default build directory.

  2. Run the fx set-device command and select step-atom-yard-juicy (the emulator’s default device name) to be your device, for example:

    $ fx set-device
    
    Multiple devices found, please pick one from the list:
    1) rabid-snort-wired-tutu
    2) step-atom-yard-juicy
    #? 2
    New default device: step-atom-yard-juicy
    
  3. In another new terminal, start a package server:

    fx serve
    

    The fx serve command continues to run as a package server for the device.

Run the end-to-end test

Run the screen_is_not_black_test end-to-end test:

fx run-e2e-tests screen_is_not_black_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 set <PRODUCT>.<BOARD> --with <TEST_DIRECTORY:TARGET>
fx build

For example, the following command configures your build artifacts 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

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