1*9c5db199SXin Li# Loading autotestPrivate extension on your device 2*9c5db199SXin Li 3*9c5db199SXin LiAutotestPrivate is an extension that exposes APIs that facilitate the 4*9c5db199SXin Liinteraction with a ChromeOS device during tests. This guide shows how to load 5*9c5db199SXin Lithe extension on your device. 6*9c5db199SXin Li 7*9c5db199SXin Li[TOC] 8*9c5db199SXin Li 9*9c5db199SXin Li 10*9c5db199SXin Li## Prerequisites 11*9c5db199SXin Li 12*9c5db199SXin LiYou need a device running a ChromeOS test image and a Chromium OS 13*9c5db199SXin Licheckout. To load a test image on your device follow [these steps] from the 14*9c5db199SXin LiSimple Chrome guide. To grab a checkout of Chromium OS follow the 15*9c5db199SXin Li[OS Developer Guide]. 16*9c5db199SXin Li 17*9c5db199SXin Li 18*9c5db199SXin Li## Removing rootfs verification and editing command line flags 19*9c5db199SXin LiNOTE: If you've completed these steps before feel free to skip to [Loading 20*9c5db199SXin Liautotest extension on your device](#Loading-autotest-extension-on-your-device) 21*9c5db199SXin Li 22*9c5db199SXin LiTo get a command shell on the device: 23*9c5db199SXin Li 24*9c5db199SXin Li1. Run in your workstation: 25*9c5db199SXin Li 26*9c5db199SXin Li `ssh root@$IP_ADDR` 27*9c5db199SXin Li 28*9c5db199SXin Li Use the default password: 29*9c5db199SXin Li 30*9c5db199SXin Li `test0000` 31*9c5db199SXin Li 32*9c5db199SXin Li1. To run ChromeOS with flags, first make usr partition writeable with: 33*9c5db199SXin Li 34*9c5db199SXin Li ``` 35*9c5db199SXin Li /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 2 36*9c5db199SXin Li /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 4 37*9c5db199SXin Li ``` 38*9c5db199SXin Li 39*9c5db199SXin Li1. Reboot your device for rootfs changes to take effect. Run: 40*9c5db199SXin Li 41*9c5db199SXin Li `reboot` 42*9c5db199SXin Li 43*9c5db199SXin Li1. Then append desired flags(listed below) to `/etc/chrome_dev.conf`. 44*9c5db199SXin Li 45*9c5db199SXin Li## Loading autotest extension on your device 46*9c5db199SXin Li 47*9c5db199SXin Li1. Enter a ChromeOS chroot. Inside of your ChromeOS checkout directory run: 48*9c5db199SXin Li 49*9c5db199SXin Li `cros_sdk` 50*9c5db199SXin Li 51*9c5db199SXin Li1. From inside your ChromeOS chroot run: 52*9c5db199SXin Li 53*9c5db199SXin Li `test_that $IP_ADDR -b $BOARD stub_Pass` 54*9c5db199SXin Li 55*9c5db199SXin Li This will install the autotestPrivate extension manifest to your device. 56*9c5db199SXin Li 57*9c5db199SXin Li1. Open a command prompt in your device and edit your command line flags. 58*9c5db199SXin Li 59*9c5db199SXin Li * Add flag `--remote-debugging-port=9333` 60*9c5db199SXin Li * NOTE: Port 9333 is not required, any port will work. 61*9c5db199SXin Li * Add flag 62*9c5db199SXin Li `--load-extension=/usr/local/autotest/common_lib/cros/autotest_private_ext` 63*9c5db199SXin Li 64*9c5db199SXin Li1. In your device's command prompt run 65*9c5db199SXin Li 66*9c5db199SXin Li `restart ui` 67*9c5db199SXin Li 68*9c5db199SXin Li for flag changes to take effect. 69*9c5db199SXin Li 70*9c5db199SXin Li1. Ssh to your device with `ssh -L 9333:localhost:9333 root@$IP_ADDR` 71*9c5db199SXin Li 72*9c5db199SXin Li This will forward your device's devtools port to a local port on your 73*9c5db199SXin Li workstation. 74*9c5db199SXin Li 75*9c5db199SXin Li1. On your workstation, point your browser to `localhost:9333`. 76*9c5db199SXin Li 77*9c5db199SXin Li1. Click on *Telemetry ChromeOS AutoTest Component Extension*. This opens a 78*9c5db199SXin Li connection to the extension's backgound page. 79*9c5db199SXin Li 80*9c5db199SXin Li1. Open the console tab. 81*9c5db199SXin Li 82*9c5db199SXin LiIf you've followed all the steps correctly, you should be able to execute code 83*9c5db199SXin Liin the console tab to interact with the extension. 84*9c5db199SXin Li 85*9c5db199SXin LiFor example, try running: 86*9c5db199SXin Li``` js 87*9c5db199SXin Li> chrome.autotestPrivate.loginStatus(status => console.log(status)); 88*9c5db199SXin Li> {isLoggedIn: false, isOwner: false, isReadyForPassword: false, isScreenLocked: false} 89*9c5db199SXin Li``` 90*9c5db199SXin Li 91*9c5db199SXin Li\[these steps\]: https://chromium.googlesource.com/chromiumos/docs/+/main/simple_chrome_workflow.md#set-up-the-chrome-os-device <br> 92*9c5db199SXin Li\[OS Developer Guide\]: https://chromium.googlesource.com/chromiumos/docs/+/main/developer_guide.md#get-the-source 93