You‘ll need a ChromeOS chroot. If you’ve only done Chrome development so far, note that this is different from the Chrome checkout described in the Simple Chrome documentation.
You‘ll also need a ChromeOS device running a system image built with the test
flag that’s reachable from your workstation via SSH. An image running in a virtual machine will also work. If you‘re using a test image that you downloaded rather than one built in your chroot, make sure that it’s a recent version.
WARNING: Potential data loss: Many Tast tests remove all user profiles from the device when run, including any local state. Prefer to have a device specifically for testing.
Assuming that you already have a valid ChromeOS repo checked out (see ChromeOS chroot), it is recommended to update the chroot by doing:
cd ${CHROMEOS_SRC} chromite/bin/cros_sdk # to enter chroot ./update_chroot # makes sure that the latest dependencies are installed
Any modern editor supports Go. The following are the instructions to setup Visual Studio Code with Tast code navigation:
Download Visual Studio Code
Install the official Go extension (VSCode will recommend that extension once you open a Go file), and optionally CrOS IDE, which among others substitutes the step 3 and 4 once you open a Tast test file.
Update the GOPATH
environment variable to make code navigation works (F12
key)
mkdir ~/go # Main GOPATH, where extra binaries will get installed. export GOPATH=$HOME/go # Append Tast repos to GOPATH export GOPATH=${GOPATH}:${CHROMEOS_SRC}/src/platform/tast-tests:${CHROMEOS_SRC}/src/platform/tast # Append Tast dependencies export GOPATH=${GOPATH}:${CHROMEOS_SRC}/chroot/usr/lib/gopath
Start Visual Studio Code with Tast
cd ${CHROMEOS_SRC}/src/platform/ code ./tast-tests ./tast
Note: If you are using the VSCode “Remote-SSH” extension, restart VSCode‘s SSH server after setting the GOPATH, otherwise the Go extension won’t pick it up. For example, using the VSCode command palette, you can run >Remote-SSH: Kill VS Code Server on Host
.
After that, it's useful to add the following to your settings JSON to avoid opening a 404 page whenever you try to follow links from import statements:
"gopls": { "ui.navigation.importShortcut": "Definition" },
https://github.com/golang/vscode-go/issues/237#issuecomment-646067281
WARNING: Potential data loss: Tast may delete profiles and local state.
In your chroot, run the following:
tast -verbose run -build=false <test-device-ip> login.Chrome
You should see output scroll by on your workstation, and on the ChromeOS device, the test should log in and load a webpage. After the test is done, take a look at the results in /tmp/tast/results/latest
in your chroot.
WARNING: Potential data loss: Tast may delete profiles and local state.
The previous step ran a test that was already built into your device's system image, but you can also use the tast
command to quickly rebuild all tests and push them to the device.
In your chroot, run the same command as before but without the -build=false
argument:
tast -verbose run <test-device-ip> login.Chrome
This time, the command will take a bit longer (but build objects will be cached). The test should succeed again.
See Running Tests for more information.
Now, let‘s modify the test. In your ChromeOS checkout, go to src/platform/tast-tests/src/go.chromium.org/tast-tests/cros/local/bundles/cros/login
and open chrome.go
(for convenience, there’s also a cros
symlink at the top of tast-tests
). The Chrome
function here will run directly on the test device.
At the end of the function testChromeLogin
, add the following code:
if _, err = cr.NewConn(ctx, "https://www.google.com/"); err != nil {
s.Error("Failed to open page: ", err)
}
Back in your chroot, run tast
again:
tast -verbose run <test-device-ip> login.Chrome
This time, the test should additionally open a Google search page.
Return to the test file and add the following statement at the end of the function testChromeLogin
:
s.Error("This is an intentional error")
If you build and run the test again, you should see it fail.
See Writing Tests for more information, and explore the tast-tests repository to see existing tests and related packages. Codelab #1 walks through the creation of a simple test.
Additional Tast documentation is available in the tast repository.
Many resources are available for learning more about Go. Here are a few: