Test Lacros using real devices or cros VM

How to run a test?

Lacros Tast test on DUT/VM

Run Tast from Chrome OS chroot

Currently, the official way to write and run Tast tests from workstation is to use the ChromeOS Chroot, which needs chromiumos repository setup. Here are reference documents:

Checking out the ChromiumOS repo and create a chroot

Run Tast tests: Quick Start

If you don’t have a chromiumos repo already, it’s worth noting that it will take at least a few hours to get one set up for the first time.

Example command to run the tast test in Chroot:

(chroot)% tast run ${your-device-ip}:${port} lacros.Basic

By default, the test will use the RootFS Lacros that is packaged as part of the ChromeOS image, to test a newly built Lacros, first deploy the Lacros to the DUT:

./third_party/chromite/bin/deploy_chrome --build-dir=out_device_lacros/Release \
--device="${your-device-ip}:${port}" --nostrip --lacros

And then invoke tast command with a var:

(chroot)% tast run -var=lacros.DeployedBinary=/usr/local/lacros-chrome
${your-device-ip}:${port} lacros.Basic

Using chromium bots

If you don’t need to write or modify Tast tests, and just want to run them to check if your change works with the current Tast tests, the quickest way is to trigger the Chromium bots: lacros-amd64-generic-rel. Compared to 1 above, it is very easy for those who do not have a ChromiumOS checkout locally. However, it only supports running pre-built tests, so there’s no flexibility for modifying or debugging the tests themselves, so If you hit any unexpected issues, please fallback to using the Chrome OS chroot workflow described above.

Chromium-style GN/Ninja approach

One can also reproduce the 2nd workflow locally with the following steps:

First of all, build the lacros_all_tast_tests test target

autoninja -C out_device_lacros/Release/ lacros_all_tast_tests

Confirm that the build successfully generated a test runner script

ls out_device_lacros/Release/bin/run_lacros_all_tast_tests

Run tast test on the DUT

./out_device_lacros/Release/bin/run_lacros_all_tast_tests --board=${board} \
--device="${your-device-ip}:${port}" --logs-dir ~/test/logs

For how to set up a DUT, please see Build DUT Lacros. If you don’t have a physical device, you can use a VM with the following command:

./out_device_lacros/Release/bin/run_lacros_all_tast_tests –board=amd64-generic \
 –use-vm --logs-dir ~/test/logs

Run unit tests on DUT

It’s almost identical to the Chromium-style GN/Ninja approach for running Tast tests. Take cc_unittests for example:

First of all, build the cc_unittests test target

autoninja -C out_device_lacros/Release/ cc_unittests

Confirm that the build successfully generated a test runner script

ls out_device_lacros/Release/bin/run_cc_unittests

How to write a new test?

Tast test

tast-writing

(Internal only)go/lacros-tast-porting

(Internal only)go/tast-failures, go/tast-debugging-guide Investigate test failures or debug.