xref: /aosp_15_r20/external/autotest/docs/loading-autotest-extension-on-device.md (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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