# Running GPU integration tests on Fuchsia [TOC] General instruction on running and debugging GPU integration tests can be found [here](../gpu/gpu_testing.md). Fuchsia uses either [web_engine_shell](../../fuchsia_web/shell/README.md) or the Chrome browser to run GPU integration tests. For the sake of this example, we will be using `web_engine_shell` as the target browser and `gpu_process` as the test suite we wish to execute. Build the target `telemetry_gpu_integration_test_fuchsia` and run the appropriate commands: ## Hermetic emulation The test script brings up an emulator, runs the tests on it, and shuts the emulator down when finished. ```bash $ content/test/gpu/run_gpu_integration_test_fuchsia.py gpu_process --browser=web-engine-shell --out-dir=/path/to/outdir ``` ## Additional flags You can specify the following flags to help replicate failure cases: - `--test-filter=<regex of test cases>`: Use this to filter test cases - `--total-shards=<num shards>`: Specify total number of shards to split tests over. You would use this to replicate sharding on a bot. - `--shard-index=<shard index>`: Specify shard index for splitting up the given tests. ## Run on an physical device If ffx has already been set up to use the target device by default, or if there is only one discoverable device on the host: ```bash $ content/test/gpu/run_gpu_integration_test_fuchsia.py gpu_process --browser=web-engine-shell --out-dir=/path/to/outdir -d ``` Otherwise, specify the id of the target device: ```bash $ content/test/gpu/run_gpu_integration_test_fuchsia.py gpu_process --browser=web-engine-shell --out-dir=/path/to/outdir --target-id=[TARGET_ID] ### Updating OS flag You can update the OS of a device by specifying the path to an image and how to check the OS: ```bash $ content/test/gpu/run_gpu_integration_test_fuchsia.py gpu_process --browser=web-engine-shell --out-dir=/path/to/outdir -d --os-check=check --system-image-dir=path/to/dir/containing/image ``` ## Run on a device that needs packages built from Fuchsia source ```bash $ content/test/gpu/run_gpu_integration_test_fuchsia.py gpu_process --browser=web-engine-shell --out-dir=/path/to/outdir -d --repo=/path/to/fuchsia/outdir --no-repo-init ``` Note that `fx serve` should not be running, since the script handles launching the package server from the Fuchsia output directory. ## Run on a device the host is connected to remotely via ssh ```bash $ content/test/gpu/run_gpu_integration_test_fuchsia.py gpu_process --browser=web-engine-shell --out-dir=/path/to/outdir --target-id=[::1]:8022 ``` Note the this requires a remote tunnel to have been set up first.