This guide provides instructions on how to run an end-to-end test for testing a Fuchsia product.
This guide uses QEMU{:.external} 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:
Verify the following requirements:
Set up your Fuchsia development environment (see Get Fuchsia source code).
Configure an IPv6 network for the emulator:
sudo ip tuntap add dev qemu mode tap user $USER
sudo ifconfig qemu up
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:
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.
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 your newly built Fuchsia image and run a package repository server:
Note: The steps in this section assume that you don't have any terminals currently running QEMU or the fx serve
command.
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.
Run the fx set-device
command and select step-atom-yard-juicy
(the emulator’s default device name) to be your device, for example:
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 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
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
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.