<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>k6/browser on Grafana Labs</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/</link><description>Recent content in k6/browser on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/k6/v2.3.x/javascript-api/k6-browser/index.xml" rel="self" type="application/rss+xml"/><item><title>BrowserContext</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/</guid><content><![CDATA[&lt;h1 id=&#34;browsercontext&#34;&gt;BrowserContext&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;BrowserContext&lt;/code&gt;s provide a way to operate multiple independent sessions, with separate pages, cache, and cookies. A default &lt;code&gt;BrowserContext&lt;/code&gt; is created when a browser is launched.&lt;/p&gt;
&lt;p&gt;The 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/#browser-module-api&#34;&gt;browser module API&lt;/a&gt; is used to create a new &lt;code&gt;BrowserContext&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;page&lt;/a&gt; opens another page, e.g. with a &lt;code&gt;window.open&lt;/code&gt; call, the popup will belong to the parent page&amp;rsquo;s &lt;code&gt;BrowserContext&lt;/code&gt;.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/addcookies/&#34;&gt;addCookies()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Adds 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/cookie/&#34;&gt;cookies&lt;/a&gt; into the &lt;code&gt;BrowserContext&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/addinitscript/&#34;&gt;addInitScript()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Adds a script that will be evaluated on 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;page&lt;/a&gt; creation, 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/&#34;&gt;frame&lt;/a&gt; attached or a navigation occurs.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/clearcookies/&#34;&gt;clearCookies()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Clear the &lt;code&gt;BrowserContext&lt;/code&gt;&amp;rsquo;s 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/cookie/&#34;&gt;cookies&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/clearpermissions/&#34;&gt;clearPermissions()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Clears all permission overrides for the &lt;code&gt;BrowserContext&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/cookies/&#34;&gt;cookies()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a list of 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/cookie/&#34;&gt;cookies&lt;/a&gt; from the &lt;code&gt;BrowserContext&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/close/&#34;&gt;close()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Close the &lt;code&gt;BrowserContext&lt;/code&gt; and all its 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;page&lt;/a&gt;s.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/grantpermissions/&#34;&gt;grantPermissions(permissions[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Grants specified permissions to the &lt;code&gt;BrowserContext&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/newpage/&#34;&gt;newPage()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Uses the &lt;code&gt;BrowserContext&lt;/code&gt; to create a new 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;Page&lt;/a&gt; and returns it.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/pages/&#34;&gt;pages()&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/444&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Returns a list of 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;page&lt;/a&gt;s that belongs to the &lt;code&gt;BrowserContext&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/setdefaultnavigationtimeout/&#34;&gt;setDefaultNavigationTimeout(timeout)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the default navigation timeout in milliseconds.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/setdefaulttimeout/&#34;&gt;setDefaultTimeout(timeout)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the default maximum timeout for all methods accepting a timeout option in milliseconds.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/setgeolocation/&#34;&gt;setGeolocation(geolocation)&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/435&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Sets the &lt;code&gt;BrowserContext&lt;/code&gt;&amp;rsquo;s geolocation.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/setoffline/&#34;&gt;setOffline(offline)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Toggles the &lt;code&gt;BrowserContext&lt;/code&gt;&amp;rsquo;s connectivity on/off.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/waitforevent/&#34;&gt;waitForEvent(event[, optionsOrPredicate])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the event to fire and passes its value into the predicate function.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="browsercontext">BrowserContext&lt;/h1>
&lt;p>&lt;code>BrowserContext&lt;/code>s provide a way to operate multiple independent sessions, with separate pages, cache, and cookies. A default &lt;code>BrowserContext&lt;/code> is created when a browser is launched.&lt;/p></description></item><item><title>Chromium</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/chromium/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/chromium/</guid><content><![CDATA[&lt;h1 id=&#34;chromium&#34;&gt;Chromium&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;chromium&lt;/code&gt; is a browser type that you can import from the browser module (&lt;code&gt;&#39;k6/browser&#39;&lt;/code&gt;). It lets your test attach to a Chromium-based browser that is already running, instead of one that k6 launches and manages for you.&lt;/p&gt;
&lt;p&gt;Use it when the browser lifecycle isn&amp;rsquo;t k6&amp;rsquo;s to manage, for example when the browser runs in a separate container or when a third-party provider hands you a browser session. Everything else stays the same: the returned browser exposes the same 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/#browser-module-api&#34;&gt;browser module API&lt;/a&gt; as a k6-managed 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;&lt;code&gt;browser&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/chromium/connectovercdp/&#34;&gt;connectOverCDP(wsEndpoint)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Attaches to an existing Chromium-based browser over the &lt;a href=&#34;https://chromedevtools.github.io/devtools-protocol/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Chrome DevTools Protocol&lt;/a&gt; (CDP) and returns the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;Browser&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="chromium">Chromium&lt;/h1>
&lt;p>&lt;code>chromium&lt;/code> is a browser type that you can import from the browser module (&lt;code>'k6/browser'&lt;/code>). It lets your test attach to a Chromium-based browser that is already running, instead of one that k6 launches and manages for you.&lt;/p></description></item><item><title>ConsoleMessage</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/console-message/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/console-message/</guid><content><![CDATA[&lt;h1 id=&#34;consolemessage&#34;&gt;ConsoleMessage&lt;/h1&gt;


&lt;div data-shared=&#34;browser-module-wip.md&#34;&gt;
            

&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/div&gt;

        
&lt;h2 id=&#34;supported-apis&#34;&gt;Supported APIs&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;args()&lt;/td&gt;
              &lt;td&gt;List of arguments passed to a &lt;code&gt;console&lt;/code&gt; function call.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;page()&lt;/td&gt;
              &lt;td&gt;The page that produced this console message.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;text()&lt;/td&gt;
              &lt;td&gt;The text of the console message.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;type()&lt;/td&gt;
              &lt;td&gt;The type of the console message. For example: &lt;code&gt;log&lt;/code&gt;, or &lt;code&gt;debug&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="consolemessage">ConsoleMessage&lt;/h1>
&lt;div data-shared="browser-module-wip.md">
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p>&lt;/blockquote>&lt;/div>
&lt;/div>
&lt;h2 id="supported-apis">Supported APIs&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Method&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>args()&lt;/td>
&lt;td>List of arguments passed to a &lt;code>console&lt;/code> function call.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>page()&lt;/td>
&lt;td>The page that produced this console message.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>text()&lt;/td>
&lt;td>The text of the console message.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>type()&lt;/td>
&lt;td>The type of the console message. For example: &lt;code>log&lt;/code>, or &lt;code>debug&lt;/code>.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>MetricMessage</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/metricmessage/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/metricmessage/</guid><content><![CDATA[&lt;h1 id=&#34;metricmessage&#34;&gt;MetricMessage&lt;/h1&gt;
&lt;p&gt;A &lt;code&gt;MetricMessage&lt;/code&gt; object allows tagging of metrics that are measured and emitted for the page.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MetricMessage&lt;/code&gt; objects are dispatched by the page when a handler is registered with 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on(&amp;lsquo;metric&amp;rsquo;)&lt;/a&gt;. For each metric that is measured and emitted for the page, the k6 browser module delivers a &lt;code&gt;MetricMessage&lt;/code&gt; object to the registered handlers, allowing them to pattern match and tag metrics.&lt;/p&gt;
&lt;h2 id=&#34;tag&#34;&gt;tag&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;tag&lt;/code&gt; method matches the given &lt;code&gt;matches&lt;/code&gt; with the current metric&amp;rsquo;s url and name tags. When a match is found, it will use &lt;code&gt;name&lt;/code&gt; to replace the existing URL and name tag values.&lt;/p&gt;
&lt;p&gt;Doing this helps group metrics with different URL and name tags that, in fact, reference the same resource, allowing for correlation over time and reducing the cardinality of the metrics.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Parameter&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;tagMatch&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;The tagMatch object and its properties that are used for matching metrics. Required.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;tagMatch.name&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The name value that replaces the current metric&amp;rsquo;s URL and name tag values, if a match is found. Required, and must not be an empty string.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;tagMatch.matches&lt;/td&gt;
              &lt;td&gt;object[]&lt;/td&gt;
              &lt;td&gt;An array of objects containing the matchers which will be used to match against the current metric&amp;rsquo;s URL and name tags. Required.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;tagMatch.matches.url&lt;/td&gt;
              &lt;td&gt;RegExp&lt;/td&gt;
              &lt;td&gt;The regular expression used to find matches in the current metric&amp;rsquo;s URL and name tags. Required.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;tagMatch.matches.method&lt;/td&gt;
              &lt;td&gt;string?&lt;/td&gt;
              &lt;td&gt;Used to match the metric&amp;rsquo;s method tag. Valid values are &lt;code&gt;&#39;GET&#39;&lt;/code&gt;, &lt;code&gt;&#39;POST&#39;&lt;/code&gt;, &lt;code&gt;&#39;PUT&#39;&lt;/code&gt;, &lt;code&gt;&#39;DELETE&#39;&lt;/code&gt;, &lt;code&gt;&#39;PATCH&#39;&lt;/code&gt;, &lt;code&gt;&#39;OPTIONS&#39;&lt;/code&gt;, &lt;code&gt;&#39;HEAD&#39;&lt;/code&gt;, &lt;code&gt;&#39;TRACE&#39;&lt;/code&gt; and &lt;code&gt;&#39;CONNECT&#39;&lt;/code&gt;. It&amp;rsquo;s optional, and when it&amp;rsquo;s not set it will group all metrics regardless of the method tag.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example-usage&#34;&gt;Example Usage&lt;/h3&gt;
&lt;!-- eslint-skip--&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;// First we need to register a handler with `page.on(&amp;#39;metric&amp;#39;)`.
page.on(&amp;#39;metric&amp;#39;, (metric) =&amp;gt; {
  // It will find a match between the current metric url and name tags against
  // the supplied regular expression in `url`.
  metric.tag({
    // This is the new name value that will replace the existing value in the
    // url and name tags when a match is found.
    name: &amp;#39;test&amp;#39;,
    // You can provide multiple matches here.
    matches: [
      {
        url: /^https:\/\/test\.k6\.io\/\?q=[0-9a-z]&amp;#43;$/,
        // When a method is defined it will also need to match on that too. If a
        // method is not provided it will match on all method types.
        method: &amp;#39;GET&amp;#39;,
      },
    ],
  });
});&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="metricmessage">MetricMessage&lt;/h1>
&lt;p>A &lt;code>MetricMessage&lt;/code> object allows tagging of metrics that are measured and emitted for the page.&lt;/p>
&lt;p>&lt;code>MetricMessage&lt;/code> objects are dispatched by the page when a handler is registered with
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/">page.on(&amp;lsquo;metric&amp;rsquo;)&lt;/a>. For each metric that is measured and emitted for the page, the k6 browser module delivers a &lt;code>MetricMessage&lt;/code> object to the registered handlers, allowing them to pattern match and tag metrics.&lt;/p></description></item><item><title>ElementHandle</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/</guid><content><![CDATA[&lt;h1 id=&#34;elementhandle&#34;&gt;ElementHandle&lt;/h1&gt;


&lt;div data-shared=&#34;browser-module-wip.md&#34;&gt;
            

&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/div&gt;

        
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/query/&#34;&gt;$(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Queries the element for the given selector.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/queryall/&#34;&gt;$$(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Queries the elements for the given selector.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/boundingbox/&#34;&gt;boundingBox()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the bounding box of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/check/&#34;&gt;check([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks the element if it is a &lt;code&gt;checkbox&lt;/code&gt; or &lt;code&gt;radio&lt;/code&gt; button.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/click/&#34;&gt;click([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Clicks on the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/contentframe/&#34;&gt;contentFrame()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/&#34;&gt;Frame&lt;/a&gt; of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/dblclick/&#34;&gt;dblclick([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Double clicks on the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/dispatchevent/&#34;&gt;dispatchEvent(type[, eventInit])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches an event to the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/fill/&#34;&gt;fill(value[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fills the specified value into the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/focus/&#34;&gt;focus()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Focuses on the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/getattribute/&#34;&gt;getAttribute(name)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the specified attribute of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/hover/&#34;&gt;hover([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Hovers over the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/innerhtml/&#34;&gt;innerHTML()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the inner HTML of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/innertext/&#34;&gt;innerText()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the inner text of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/inputvalue/&#34;&gt;inputValue([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the input element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/ischecked/&#34;&gt;isChecked()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the &lt;code&gt;checkbox&lt;/code&gt; input type is selected.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/isdisabled/&#34;&gt;isDisabled()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;disabled&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/iseditable/&#34;&gt;isEditable()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;editable&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/isenabled/&#34;&gt;isEnabled()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;enabled&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/ishidden/&#34;&gt;isHidden()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;hidden&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/isvisible/&#34;&gt;isVisible()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;visible&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/ownerframe/&#34;&gt;ownerFrame()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/&#34;&gt;Frame&lt;/a&gt; of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/press/&#34;&gt;press(key[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Focuses on the element and presses a single key or a combination of keys using the virtual 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/&#34;&gt;keyboard&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/screenshot/&#34;&gt;screenshot([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Takes a screenshot of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/scrollintoviewifneeded/&#34;&gt;scrollIntoViewIfNeeded([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Scrolls the element into view if needed.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/selectoption/&#34;&gt;selectOption(values[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Selects the &lt;code&gt;select&lt;/code&gt; element&amp;rsquo;s one or more options which match the values.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/selecttext/&#34;&gt;selectText([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Selects the text of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/setchecked/&#34;&gt;setChecked(checked[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the &lt;code&gt;checkbox&lt;/code&gt; or &lt;code&gt;radio&lt;/code&gt; input element&amp;rsquo;s value to the specified checked or unchecked state.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/setinputfiles/&#34;&gt;setInputFiles(file[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the file input element&amp;rsquo;s value to the specified files.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/tap/&#34;&gt;tap(options)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Taps the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/textcontent/&#34;&gt;textContent()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the text content of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/type/&#34;&gt;type(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Focuses on the element and types the specified text into the element using the virtual 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/&#34;&gt;keyboard&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/uncheck/&#34;&gt;uncheck([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Unchecks the element if it is a &lt;code&gt;checkbox&lt;/code&gt; or &lt;code&gt;radio&lt;/code&gt; button.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/waitforelementstate/&#34;&gt;waitForElementState(state[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the element to reach the specified state.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/waitforselector/&#34;&gt;waitForSelector(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the element to be present in the DOM and to be visible.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;examples&#34;&gt;Examples&lt;/h2&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;
import { check } from &amp;#34;https://jslib.k6.io/k6-utils/1.5.0/index.js&amp;#34;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // Goto front page, find login link and click it
  try {
    await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);
    const messagesLink = await page.$(&amp;#39;a[href=&amp;#34;/my_messages.php&amp;#34;]&amp;#39;);

    await Promise.all([page.waitForNavigation(), messagesLink.click()]);
    // Enter login credentials and login
    const login = await page.$(&amp;#39;input[name=&amp;#34;login&amp;#34;]&amp;#39;);
    await login.type(&amp;#39;admin&amp;#39;);
    const password = await page.$(&amp;#39;input[name=&amp;#34;password&amp;#34;]&amp;#39;);
    await password.type(&amp;#39;123&amp;#39;);

    const submitButton = await page.$(&amp;#39;input[type=&amp;#34;submit&amp;#34;]&amp;#39;);

    await Promise.all([page.waitForNavigation(), submitButton.click()]);

    await check(page, {
      &amp;#39;header&amp;#39;: async p =&amp;gt; {
        const h2 = await p.$(&amp;#39;h2&amp;#39;);
        return await h2.textContent() == &amp;#39;Welcome, admin!&amp;#39;;
      },
    });
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;!-- eslint-skip --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;
import { check } from &amp;#39;https://jslib.k6.io/k6-utils/1.5.0/index.js&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    // Inject page content
    await page.setContent(`
          &amp;lt;div class=&amp;#34;visible&amp;#34;&amp;gt;Hello world&amp;lt;/div&amp;gt;
          &amp;lt;div style=&amp;#34;display:none&amp;#34; class=&amp;#34;hidden&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
          &amp;lt;div class=&amp;#34;editable&amp;#34; editable&amp;gt;Edit me&amp;lt;/div&amp;gt;
          &amp;lt;input type=&amp;#34;checkbox&amp;#34; enabled class=&amp;#34;enabled&amp;#34;&amp;gt;
          &amp;lt;input type=&amp;#34;checkbox&amp;#34; disabled class=&amp;#34;disabled&amp;#34;&amp;gt;
          &amp;lt;input type=&amp;#34;checkbox&amp;#34; checked class=&amp;#34;checked&amp;#34;&amp;gt;
          &amp;lt;input type=&amp;#34;checkbox&amp;#34; class=&amp;#34;unchecked&amp;#34;&amp;gt;
    `);

    // Check state
    await check(page, {
      &amp;#39;is visible&amp;#39;: async p =&amp;gt; {
        const e = await p.$(&amp;#39;.visible&amp;#39;);
        return e.isVisible();
      },
      &amp;#39;is hidden&amp;#39;: async p =&amp;gt; {
        const e = await p.$(&amp;#39;.hidden&amp;#39;);
        return e.isHidden();
      },
      &amp;#39;is editable&amp;#39;: async p =&amp;gt; {
        const e = await p.$(&amp;#39;.editable&amp;#39;);
        return e.isEditable();
      },
      &amp;#39;is enabled&amp;#39;: async p =&amp;gt; {
        const e = await p.$(&amp;#39;.enabled&amp;#39;);
        return e.isEnabled();
      },
      &amp;#39;is disabled&amp;#39;: async p =&amp;gt; {
        const e = await p.$(&amp;#39;.disabled&amp;#39;);
        return e.isDisabled();
      },
      &amp;#39;is checked&amp;#39;: async p =&amp;gt; {
        const e = await p.$(&amp;#39;.checked&amp;#39;);
        return e.isChecked();
      },
      &amp;#39;is unchecked&amp;#39;: async p =&amp;gt; {
        const e = await p.$(&amp;#39;.unchecked&amp;#39;);
        return await e.isChecked() === false;
      },
    });
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="elementhandle">ElementHandle&lt;/h1>
&lt;div data-shared="browser-module-wip.md">
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p>&lt;/blockquote>&lt;/div>
&lt;/div>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Method&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/query/">$(selector)&lt;/a>&lt;/td>
&lt;td>Queries the element for the given selector.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/queryall/">$$(selector)&lt;/a>&lt;/td>
&lt;td>Queries the elements for the given selector.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/boundingbox/">boundingBox()&lt;/a>&lt;/td>
&lt;td>Returns the bounding box of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/check/">check([options])&lt;/a>&lt;/td>
&lt;td>Checks the element if it is a &lt;code>checkbox&lt;/code> or &lt;code>radio&lt;/code> button.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/click/">click([options])&lt;/a>&lt;/td>
&lt;td>Clicks on the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/contentframe/">contentFrame()&lt;/a>&lt;/td>
&lt;td>Returns the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/frame/">Frame&lt;/a> of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/dblclick/">dblclick([options])&lt;/a>&lt;/td>
&lt;td>Double clicks on the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/dispatchevent/">dispatchEvent(type[, eventInit])&lt;/a>&lt;/td>
&lt;td>Dispatches an event to the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/fill/">fill(value[, options])&lt;/a>&lt;/td>
&lt;td>Fills the specified value into the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/focus/">focus()&lt;/a>&lt;/td>
&lt;td>Focuses on the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/getattribute/">getAttribute(name)&lt;/a>&lt;/td>
&lt;td>Returns the specified attribute of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/hover/">hover([options])&lt;/a>&lt;/td>
&lt;td>Hovers over the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/innerhtml/">innerHTML()&lt;/a>&lt;/td>
&lt;td>Returns the inner HTML of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/innertext/">innerText()&lt;/a>&lt;/td>
&lt;td>Returns the inner text of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/inputvalue/">inputValue([options])&lt;/a>&lt;/td>
&lt;td>Returns the value of the input element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/ischecked/">isChecked()&lt;/a>&lt;/td>
&lt;td>Checks if the &lt;code>checkbox&lt;/code> input type is selected.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/isdisabled/">isDisabled()&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>disabled&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/iseditable/">isEditable()&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>editable&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/isenabled/">isEnabled()&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>enabled&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/ishidden/">isHidden()&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>hidden&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/isvisible/">isVisible()&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>visible&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/ownerframe/">ownerFrame()&lt;/a>&lt;/td>
&lt;td>Returns the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/frame/">Frame&lt;/a> of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/press/">press(key[, options])&lt;/a>&lt;/td>
&lt;td>Focuses on the element and presses a single key or a combination of keys using the virtual
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/">keyboard&lt;/a>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/screenshot/">screenshot([options])&lt;/a>&lt;/td>
&lt;td>Takes a screenshot of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/scrollintoviewifneeded/">scrollIntoViewIfNeeded([options])&lt;/a>&lt;/td>
&lt;td>Scrolls the element into view if needed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/selectoption/">selectOption(values[, options])&lt;/a>&lt;/td>
&lt;td>Selects the &lt;code>select&lt;/code> element&amp;rsquo;s one or more options which match the values.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/selecttext/">selectText([options])&lt;/a>&lt;/td>
&lt;td>Selects the text of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/setchecked/">setChecked(checked[, options])&lt;/a>&lt;/td>
&lt;td>Sets the &lt;code>checkbox&lt;/code> or &lt;code>radio&lt;/code> input element&amp;rsquo;s value to the specified checked or unchecked state.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/setinputfiles/">setInputFiles(file[, options])&lt;/a>&lt;/td>
&lt;td>Sets the file input element&amp;rsquo;s value to the specified files.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/tap/">tap(options)&lt;/a>&lt;/td>
&lt;td>Taps the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/textcontent/">textContent()&lt;/a>&lt;/td>
&lt;td>Returns the text content of the element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/type/">type(text[, options])&lt;/a>&lt;/td>
&lt;td>Focuses on the element and types the specified text into the element using the virtual
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/">keyboard&lt;/a>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/uncheck/">uncheck([options])&lt;/a>&lt;/td>
&lt;td>Unchecks the element if it is a &lt;code>checkbox&lt;/code> or &lt;code>radio&lt;/code> button.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/waitforelementstate/">waitForElementState(state[, options])&lt;/a>&lt;/td>
&lt;td>Waits for the element to reach the specified state.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/waitforselector/">waitForSelector(selector[, options])&lt;/a>&lt;/td>
&lt;td>Waits for the element to be present in the DOM and to be visible.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="examples">Examples&lt;/h2>
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">import { browser } from &amp;#39;k6/browser&amp;#39;;
import { check } from &amp;#34;https://jslib.k6.io/k6-utils/1.5.0/index.js&amp;#34;;
export const options = {
scenarios: {
browser: {
executor: &amp;#39;shared-iterations&amp;#39;,
options: {
browser: {
type: &amp;#39;chromium&amp;#39;,
},
},
},
},
};
export default async function () {
const page = await browser.newPage();
// Goto front page, find login link and click it
try {
await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);
const messagesLink = await page.$(&amp;#39;a[href=&amp;#34;/my_messages.php&amp;#34;]&amp;#39;);
await Promise.all([page.waitForNavigation(), messagesLink.click()]);
// Enter login credentials and login
const login = await page.$(&amp;#39;input[name=&amp;#34;login&amp;#34;]&amp;#39;);
await login.type(&amp;#39;admin&amp;#39;);
const password = await page.$(&amp;#39;input[name=&amp;#34;password&amp;#34;]&amp;#39;);
await password.type(&amp;#39;123&amp;#39;);
const submitButton = await page.$(&amp;#39;input[type=&amp;#34;submit&amp;#34;]&amp;#39;);
await Promise.all([page.waitForNavigation(), submitButton.click()]);
await check(page, {
&amp;#39;header&amp;#39;: async p =&amp;gt; {
const h2 = await p.$(&amp;#39;h2&amp;#39;);
return await h2.textContent() == &amp;#39;Welcome, admin!&amp;#39;;
},
});
} finally {
await page.close();
}
}&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;!-- eslint-skip -->
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">import { browser } from &amp;#39;k6/browser&amp;#39;;
import { check } from &amp;#39;https://jslib.k6.io/k6-utils/1.5.0/index.js&amp;#39;;
export const options = {
scenarios: {
browser: {
executor: &amp;#39;shared-iterations&amp;#39;,
options: {
browser: {
type: &amp;#39;chromium&amp;#39;,
},
},
},
},
};
export default async function () {
const page = await browser.newPage();
try {
// Inject page content
await page.setContent(`
&amp;lt;div class=&amp;#34;visible&amp;#34;&amp;gt;Hello world&amp;lt;/div&amp;gt;
&amp;lt;div style=&amp;#34;display:none&amp;#34; class=&amp;#34;hidden&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div class=&amp;#34;editable&amp;#34; editable&amp;gt;Edit me&amp;lt;/div&amp;gt;
&amp;lt;input type=&amp;#34;checkbox&amp;#34; enabled class=&amp;#34;enabled&amp;#34;&amp;gt;
&amp;lt;input type=&amp;#34;checkbox&amp;#34; disabled class=&amp;#34;disabled&amp;#34;&amp;gt;
&amp;lt;input type=&amp;#34;checkbox&amp;#34; checked class=&amp;#34;checked&amp;#34;&amp;gt;
&amp;lt;input type=&amp;#34;checkbox&amp;#34; class=&amp;#34;unchecked&amp;#34;&amp;gt;
`);
// Check state
await check(page, {
&amp;#39;is visible&amp;#39;: async p =&amp;gt; {
const e = await p.$(&amp;#39;.visible&amp;#39;);
return e.isVisible();
},
&amp;#39;is hidden&amp;#39;: async p =&amp;gt; {
const e = await p.$(&amp;#39;.hidden&amp;#39;);
return e.isHidden();
},
&amp;#39;is editable&amp;#39;: async p =&amp;gt; {
const e = await p.$(&amp;#39;.editable&amp;#39;);
return e.isEditable();
},
&amp;#39;is enabled&amp;#39;: async p =&amp;gt; {
const e = await p.$(&amp;#39;.enabled&amp;#39;);
return e.isEnabled();
},
&amp;#39;is disabled&amp;#39;: async p =&amp;gt; {
const e = await p.$(&amp;#39;.disabled&amp;#39;);
return e.isDisabled();
},
&amp;#39;is checked&amp;#39;: async p =&amp;gt; {
const e = await p.$(&amp;#39;.checked&amp;#39;);
return e.isChecked();
},
&amp;#39;is unchecked&amp;#39;: async p =&amp;gt; {
const e = await p.$(&amp;#39;.unchecked&amp;#39;);
return await e.isChecked() === false;
},
});
} finally {
await page.close();
}
}&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div></description></item><item><title>Frame</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/frame/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/frame/</guid><content><![CDATA[&lt;h1 id=&#34;frame&#34;&gt;Frame&lt;/h1&gt;
&lt;p&gt;Frame represents a single frame in a browser window. It can be a top-level frame or an iframe. Frames are used to organize content in a browser window. Frames can be nested, and each frame has its own document and window objects.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/frame-dollar/&#34;&gt;$(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Finds an element matching the specified &lt;code&gt;selector&lt;/code&gt; within the frame.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/frame-doubledollar/&#34;&gt;$$(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Finds all elements matching the specified &lt;code&gt;selector&lt;/code&gt; within the frame.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/check/&#34;&gt;check(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Select the input checkbox.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/childframes/&#34;&gt;childFrames()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns an array of child frames.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/click/&#34;&gt;click(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Clicks on an element matching a &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/content/&#34;&gt;content()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Gets the HTML contents of the frame.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/dblclick/&#34;&gt;dblclick(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Double click on an element matching the provided &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/dispatchevent/&#34;&gt;dispatchEvent(selector, type, eventInit[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches HTML DOM event types e.g. &lt;code&gt;&#39;click&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/evaluate/&#34;&gt;evaluate(pageFunction[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the &lt;code&gt;pageFunction&lt;/code&gt; invocation.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/evaluatehandle/&#34;&gt;evaluateHandle(pageFunction[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the &lt;code&gt;pageFunction&lt;/code&gt; invocation as a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/&#34;&gt;JSHandle&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/fill/&#34;&gt;fill(selector, value[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fill an &lt;code&gt;input&lt;/code&gt;, &lt;code&gt;textarea&lt;/code&gt; or &lt;code&gt;contenteditable&lt;/code&gt; element with the provided value.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/focus/&#34;&gt;focus(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fetches an element with &lt;code&gt;selector&lt;/code&gt; and focuses on it.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/frameelement/&#34;&gt;frameElement()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;frame&lt;/code&gt;&amp;rsquo;s &lt;code&gt;element&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/framelocator/&#34;&gt;frameLocator(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/&#34;&gt;FrameLocator&lt;/a&gt; for the nested iframe matching the given &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/getattribute/&#34;&gt;getAttribute(selector, name[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the element attribute value for the given attribute name.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/getbyalttext/&#34;&gt;getByAltText(altText[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;alt&lt;/code&gt; attribute text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/getbylabel/&#34;&gt;getByLabel(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for form controls with the specified label text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/getbyplaceholder/&#34;&gt;getByPlaceholder(placeholder[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for input elements with the specified &lt;code&gt;placeholder&lt;/code&gt; attribute text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/getbyrole/&#34;&gt;getByRole(role[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified ARIA role.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/getbytestid/&#34;&gt;getByTestId(testId)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;data-testid&lt;/code&gt; attribute.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/getbytext/&#34;&gt;getByText(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements containing the specified text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/getbytitle/&#34;&gt;getByTitle(title[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;title&lt;/code&gt; attribute.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/goto/&#34;&gt;goto(url[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Navigates to the specified &lt;code&gt;url&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/hover/&#34;&gt;hover(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Hovers over an element matching &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/innerhtml/&#34;&gt;innerHTML(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.innerHTML&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/innertext/&#34;&gt;innerText(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.innerText&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/inputvalue/&#34;&gt;inputValue(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns &lt;code&gt;input.value&lt;/code&gt; for the selected &lt;code&gt;input&lt;/code&gt;, &lt;code&gt;textarea&lt;/code&gt; or &lt;code&gt;select&lt;/code&gt; element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/ischecked/&#34;&gt;isChecked(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks to see if the &lt;code&gt;checkbox&lt;/code&gt; &lt;code&gt;input&lt;/code&gt; type is selected or not.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/isdetached/&#34;&gt;isDetached()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns &lt;code&gt;true&lt;/code&gt; if the frame is detached from the DOM.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/isdisabled/&#34;&gt;isDisabled(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;disabled&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/iseditable/&#34;&gt;isEditable(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;editable&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/isenabled/&#34;&gt;isEnabled(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;enabled&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/ishidden/&#34;&gt;isHidden(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the matched element is &lt;code&gt;hidden&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/isvisible/&#34;&gt;isVisible(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the matched element is &lt;code&gt;visible&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/locator/&#34;&gt;locator(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/&#34;&gt;Locator&lt;/a&gt; for the given &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/name/&#34;&gt;name()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the name of the frame.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/page/&#34;&gt;page()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the page containing the frame.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/parentframe/&#34;&gt;parentFrame()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the parent frame, if any.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/press/&#34;&gt;press(selector, key[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Focuses the element, and then presses the given &lt;code&gt;key&lt;/code&gt; on the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/&#34;&gt;Keyboard&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/selectoption/&#34;&gt;selectOption(selector, values[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Selects one or more options which match the values from a &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/setcontent/&#34;&gt;setContent(html[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the supplied HTML string to the current frame.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/setinputfiles/&#34;&gt;setInputFiles(selector, file[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the file input element&amp;rsquo;s value to the specified files.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/setchecked/&#34;&gt;setChecked(selector, checked[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the &lt;code&gt;checkbox&lt;/code&gt; or &lt;code&gt;radio&lt;/code&gt; input element&amp;rsquo;s value to the specified checked or unchecked state.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/tap/&#34;&gt;tap(selector[, options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/436&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Taps the first element that matches the &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/textcontent/&#34;&gt;textContent(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.textContent&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/title/&#34;&gt;title()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the title of the frame.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/type/&#34;&gt;type(selector, text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Types the &lt;code&gt;text&lt;/code&gt; in the first element found that matches the &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/uncheck/&#34;&gt;uncheck(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Unchecks an input &lt;code&gt;checkbox&lt;/code&gt; element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/url/&#34;&gt;url()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;frame&lt;/code&gt;&amp;rsquo;s URL.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/waitforfunction/&#34;&gt;waitForFunction(pageFunction, options[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns when the &lt;code&gt;pageFunction&lt;/code&gt; returns a truthy value.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/waitforloadstate/&#34;&gt;waitForLoadState(state[, options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/880&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Waits for the given load &lt;code&gt;state&lt;/code&gt; to be reached.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/waitfornavigation/&#34;&gt;waitForNavigation([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the given navigation lifecycle event to occur and returns the main resource response.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/waitforselector/&#34;&gt;waitForSelector(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns when element specified by selector satisfies &lt;code&gt;state&lt;/code&gt; option.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/waitfortimeout/&#34;&gt;waitForTimeout(timeout)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the given &lt;code&gt;timeout&lt;/code&gt; in milliseconds.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/waitforurl/&#34;&gt;waitForURL(url[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the frame to navigate to the specified URL.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="frame">Frame&lt;/h1>
&lt;p>Frame represents a single frame in a browser window. It can be a top-level frame or an iframe. Frames are used to organize content in a browser window. Frames can be nested, and each frame has its own document and window objects.&lt;/p></description></item><item><title>JSHandle</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/</guid><content><![CDATA[&lt;h1 id=&#34;jshandle&#34;&gt;JSHandle&lt;/h1&gt;
&lt;p&gt;Represents a reference to a JavaScript object within the context of a webpage. This allows you to interact with JavaScript objects directly from your script.&lt;/p&gt;


&lt;div data-shared=&#34;browser-module-wip.md&#34;&gt;
            

&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/div&gt;

        
&lt;h2 id=&#34;supported-apis&#34;&gt;Supported APIs&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/aselement/&#34;&gt;asElement()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns either &lt;code&gt;null&lt;/code&gt; or the object handle itself, if the object handle is an instance of 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/elementhandle/&#34;&gt;ElementHandle&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/dispose/&#34;&gt;dispose()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Stops referencing the element handle.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/evaluate/&#34;&gt;evaluate(pageFunction[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Evaluates the &lt;code&gt;pageFunction&lt;/code&gt; and returns its return value.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/evaluatehandle/&#34;&gt;evaluateHandle(pageFunction[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Evaluates the &lt;code&gt;pageFunction&lt;/code&gt; and returns a &lt;code&gt;JSHandle&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/getproperties/&#34;&gt;getProperties()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fetches a map with own property names of of the &lt;code&gt;JSHandle&lt;/code&gt; with their values as &lt;code&gt;JSHandle&lt;/code&gt; instances.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/jsonvalue/&#34;&gt;jsonValue()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fetches a JSON representation of the object.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;
&lt;!-- eslint-skip --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);
    const jsHandle = await page.evaluateHandle(() =&amp;gt; document.head);
    // ...
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="jshandle">JSHandle&lt;/h1>
&lt;p>Represents a reference to a JavaScript object within the context of a webpage. This allows you to interact with JavaScript objects directly from your script.&lt;/p></description></item><item><title>Keyboard</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/</guid><content><![CDATA[&lt;h1 id=&#34;keyboard&#34;&gt;Keyboard&lt;/h1&gt;


&lt;div data-shared=&#34;browser-module-wip.md&#34;&gt;
            

&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/div&gt;

        
&lt;p&gt;&lt;code&gt;Keyboard&lt;/code&gt; provide a way to interact with a virtual keyboard.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/down/&#34;&gt;down(key)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches a &lt;code&gt;keydown&lt;/code&gt; event.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/up/&#34;&gt;up(key)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches a &lt;code&gt;keyup&lt;/code&gt; event.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/press/&#34;&gt;press(key[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches a &lt;code&gt;keydown&lt;/code&gt; event followed by an &lt;code&gt;keyup&lt;/code&gt; event.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/type/&#34;&gt;type(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches a &lt;code&gt;keydown&lt;/code&gt;, &lt;code&gt;keypress&lt;/code&gt; or&lt;code&gt;input&lt;/code&gt;, and &lt;code&gt;keyup&lt;/code&gt; events for each character in the text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/inserttext/&#34;&gt;insertText(text)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches only an &lt;code&gt;input&lt;/code&gt; event.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
            type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  }
}

export default async function () {
  const page = await browser.newPage();
  await page.goto(&amp;#39;https://test.k6.io/my_messages.php&amp;#39;, {
    waitUntil: &amp;#39;networkidle&amp;#39;
  });

  const login = page.locator(&amp;#39;input[name=&amp;#34;login&amp;#34;]&amp;#39;);
  await login.click();
  await page.keyboard.type(&amp;#34;admin&amp;#34;);

  const password = page.locator(&amp;#39;input[name=&amp;#34;password&amp;#34;]&amp;#39;);
  await password.click();
  await page.keyboard.type(&amp;#34;123&amp;#34;);

  await Promise.all([
    page.keyboard.press(&amp;#39;Enter&amp;#39;), // submit
    page.waitForNavigation(),
  ]);

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="keyboard">Keyboard&lt;/h1>
&lt;div data-shared="browser-module-wip.md">
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p>&lt;/blockquote>&lt;/div>
&lt;/div>
&lt;p>&lt;code>Keyboard&lt;/code> provide a way to interact with a virtual keyboard.&lt;/p></description></item><item><title>Locator</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/locator/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/locator/</guid><content><![CDATA[&lt;h1 id=&#34;locator&#34;&gt;Locator&lt;/h1&gt;
&lt;p&gt;The Locator API makes it easier to work with dynamically changing elements. Some of the benefits of using it over existing ways to locate an element (e.g. &lt;code&gt;Page.$()&lt;/code&gt;) include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Helps with writing robust tests by finding an element even if the underlying frame navigates.&lt;/li&gt;
&lt;li&gt;Makes it easier to work with dynamic web pages and SPAs built with Svelte, React, Vue, etc.&lt;/li&gt;
&lt;li&gt;Enables the use of test abstractions like the Page Object Model (POM) pattern to simplify and organize tests.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strict&lt;/code&gt; mode is enabled for all &lt;code&gt;locator&lt;/code&gt; methods that are expected to target a single DOM element, meaning that if more than one element matches the given selector, an error will be thrown.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Locator can be created with the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/locator/&#34;&gt;page.locator(selector[, options])&lt;/a&gt; method.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/all/&#34;&gt;all()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;When multiple elements match the selector, returns an array of &lt;code&gt;locator&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/boundingbox/&#34;&gt;boundingBox([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the bounding box of the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/check/&#34;&gt;check([options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/471&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Select the input checkbox.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/clear/&#34;&gt;clear([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Clears text boxes and input fields of any existing values.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/click/&#34;&gt;click([options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/471&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Mouse click on the chosen element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/contentframe/&#34;&gt;contentFrame()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a &lt;code&gt;FrameLocator&lt;/code&gt; object pointing to the same &lt;code&gt;iframe&lt;/code&gt; as this locator.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/count/&#34;&gt;count()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the number of elements matching the selector.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/dblclick/&#34;&gt;dblclick([options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/471&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Mouse double click on the chosen element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/dispatchevent/&#34;&gt;dispatchEvent(type, eventInit, [options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches HTML DOM event types e.g. &lt;code&gt;&#39;click&#39;&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/evaluate/&#34;&gt;evaluate(pageFunction[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the &lt;code&gt;pageFunction&lt;/code&gt; invocation, called with the matching element as first argument.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/evaluatehandle/&#34;&gt;evaluateHandle(pageFunction[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the &lt;code&gt;pageFunction&lt;/code&gt; invocation as a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/&#34;&gt;JSHandle&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/fill/&#34;&gt;fill(value, [options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fill an &lt;code&gt;input&lt;/code&gt;, &lt;code&gt;textarea&lt;/code&gt; or &lt;code&gt;contenteditable&lt;/code&gt; element with the provided value.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/filter/&#34;&gt;filter(options)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a new &lt;code&gt;locator&lt;/code&gt; that matches only elements containing or excluding specified text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/first/&#34;&gt;first()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a &lt;code&gt;locator&lt;/code&gt; to the first matching element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/focus/&#34;&gt;focus([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Calls &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;focus&lt;/a&gt; on the element, if it can be focused.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/framelocator/&#34;&gt;frameLocator(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Shorthand for &lt;code&gt;locator(selector).contentFrame()&lt;/code&gt;. Returns a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/&#34;&gt;FrameLocator&lt;/a&gt; for the iframe matching the given &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/getattribute/&#34;&gt;getAttribute(name, [options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the element attribute value for the given attribute name.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/getbyalttext/&#34;&gt;getByAltText(altText[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;alt&lt;/code&gt; attribute text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/getbylabel/&#34;&gt;getByLabel(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for form controls with the specified label text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/getbyplaceholder/&#34;&gt;getByPlaceholder(placeholder[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for input elements with the specified &lt;code&gt;placeholder&lt;/code&gt; attribute text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/getbyrole/&#34;&gt;getByRole(role[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified ARIA role.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/getbytestid/&#34;&gt;getByTestId(testId)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;data-testid&lt;/code&gt; attribute.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/getbytext/&#34;&gt;getByText(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements containing the specified text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/getbytitle/&#34;&gt;getByTitle(title[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;title&lt;/code&gt; attribute.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/hover/&#34;&gt;hover([options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/471&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Hovers over the element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/innerhtml/&#34;&gt;innerHTML([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.innerHTML&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/innertext/&#34;&gt;innerText([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.innerText&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/inputvalue/&#34;&gt;inputValue([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns &lt;code&gt;input.value&lt;/code&gt; for the selected &lt;code&gt;input&lt;/code&gt;, &lt;code&gt;textarea&lt;/code&gt; or &lt;code&gt;select&lt;/code&gt; element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/ischecked/&#34;&gt;isChecked([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the &lt;code&gt;checkbox&lt;/code&gt; &lt;code&gt;input&lt;/code&gt; type is selected.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/isdisabled/&#34;&gt;isDisabled([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;disabled&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/iseditable/&#34;&gt;isEditable([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;editable&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/isenabled/&#34;&gt;isEnabled([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;enabled&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/ishidden/&#34;&gt;isHidden()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;hidden&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/isinviewport/&#34;&gt;isInViewport([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is in the viewport, with an optional visible-ratio threshold.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/isvisible/&#34;&gt;isVisible()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;visible&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/last/&#34;&gt;last()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a &lt;code&gt;locator&lt;/code&gt; to the last matching element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/locator/&#34;&gt;locator(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a new chained &lt;code&gt;locator&lt;/code&gt; for the given &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/nth/&#34;&gt;nth()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a &lt;code&gt;locator&lt;/code&gt; to the n-th matching element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/press/&#34;&gt;press(key, [options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Press a single key on the keyboard or a combination of keys.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/presssequentially/&#34;&gt;pressSequentially(text, [options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Type text character by character, simulating real keyboard input.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/selectoption/&#34;&gt;selectOption(values, [options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/470&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Select one or more options which match the values.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/setchecked/&#34;&gt;setChecked(checked[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the &lt;code&gt;checkbox&lt;/code&gt; or &lt;code&gt;radio&lt;/code&gt; input element&amp;rsquo;s value to the specified checked or unchecked state.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/tap/&#34;&gt;tap([options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/471&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Tap on the chosen element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/textcontent/&#34;&gt;textContent([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.textContent&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/type/&#34;&gt;type(text, [options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Type in the text into the input field.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/uncheck/&#34;&gt;uncheck([options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/471&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Unselect the &lt;code&gt;input&lt;/code&gt; checkbox.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/waitfor/&#34;&gt;waitFor([options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/472&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Wait for the element to be in a particular state e.g. &lt;code&gt;visible&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    await page.goto(&amp;#39;https://test.k6.io/flip_coin.php&amp;#39;);

    /*
    In this example, we will use two locators, matching a
    different betting button on the page. If you were to query
    the buttons once and save them as below, you would see an
    error after the initial navigation. Try it!
  
      const heads = await page.$(&amp;#34;input[value=&amp;#39;Bet on heads!&amp;#39;]&amp;#34;);
      const tails = await page.$(&amp;#34;input[value=&amp;#39;Bet on tails!&amp;#39;]&amp;#34;);
  
    The Locator API allows you to get a fresh element handle each
    time you use one of the locator methods. And, you can carry a
    locator across frame navigations. Let&amp;#39;s create two locators;
    each locates a button on the page.
    */
    const heads = page.locator(&amp;#34;input[value=&amp;#39;Bet on heads!&amp;#39;]&amp;#34;);
    const tails = page.locator(&amp;#34;input[value=&amp;#39;Bet on tails!&amp;#39;]&amp;#34;);

    const currentBet = page.locator(&amp;#34;//p[starts-with(text(),&amp;#39;Your bet: &amp;#39;)]&amp;#34;);

    // In the following Promise.all the tails locator clicks
    // on the tails button by using the locator&amp;#39;s selector.
    // Since clicking on each button causes page navigation,
    // waitForNavigation is needed -- this is because the page
    // won&amp;#39;t be ready until the navigation completes.
    // Setting up the waitForNavigation first before the click
    // is important to avoid race conditions.
    await Promise.all([page.waitForNavigation(), tails.click()]);
    console.log(await currentBet.innerText());
    // the heads locator clicks on the heads button
    // by using the locator&amp;#39;s selector.
    await Promise.all([page.waitForNavigation(), heads.click()]);
    console.log(await currentBet.innerText());
    await Promise.all([page.waitForNavigation(), tails.click()]);
    console.log(await currentBet.innerText());
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="locator">Locator&lt;/h1>
&lt;p>The Locator API makes it easier to work with dynamically changing elements. Some of the benefits of using it over existing ways to locate an element (e.g. &lt;code>Page.$()&lt;/code>) include:&lt;/p></description></item><item><title>FrameLocator</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/</guid><content><![CDATA[&lt;h1 id=&#34;framelocator&#34;&gt;FrameLocator&lt;/h1&gt;
&lt;p&gt;FrameLocator represents a way to find element(s) in an &lt;code&gt;iframe&lt;/code&gt;. Frames can be nested, and this locator supports selecting a frame element and then working with it.&lt;/p&gt;
&lt;p&gt;A FrameLocator can be created with the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/framelocator/&#34;&gt;page.frameLocator(selector)&lt;/a&gt; method or the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/contentframe/&#34;&gt;locator.contentFrame()&lt;/a&gt; method.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/framelocator/&#34;&gt;frameLocator(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/&#34;&gt;FrameLocator&lt;/a&gt; for a nested iframe matching the given &lt;code&gt;selector&lt;/code&gt; within this frame.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/getbyalttext/&#34;&gt;getByAltText(altText[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;alt&lt;/code&gt; attribute text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/getbylabel/&#34;&gt;getByLabel(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for form controls with the specified label text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/getbyplaceholder/&#34;&gt;getByPlaceholder(placeholder[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for input elements with the specified &lt;code&gt;placeholder&lt;/code&gt; attribute text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/getbyrole/&#34;&gt;getByRole(role[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified ARIA role.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/getbytestid/&#34;&gt;getByTestId(testId)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;data-testid&lt;/code&gt; attribute.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/getbytext/&#34;&gt;getByText(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements containing the specified text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/getbytitle/&#34;&gt;getByTitle(title[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;title&lt;/code&gt; attribute.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/locator/&#34;&gt;locator(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a new chained &lt;code&gt;locator&lt;/code&gt; for the given &lt;code&gt;selector&lt;/code&gt; within the frame.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="framelocator">FrameLocator&lt;/h1>
&lt;p>FrameLocator represents a way to find element(s) in an &lt;code>iframe&lt;/code>. Frames can be nested, and this locator supports selecting a frame element and then working with it.&lt;/p></description></item><item><title>Mouse</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/</guid><content><![CDATA[&lt;h1 id=&#34;mouse&#34;&gt;Mouse&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;Mouse&lt;/code&gt; provides a way to interact with a virtual mouse.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/click/&#34;&gt;click(x, y[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Mouse clicks on the &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; coordinates.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/dblclick/&#34;&gt;dblclick(x, y[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Mouse double clicks on the &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; coordinates.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/down/&#34;&gt;down([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches a &lt;code&gt;mousedown&lt;/code&gt; event on the mouse&amp;rsquo;s current position.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/up/&#34;&gt;up([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches a &lt;code&gt;mouseup&lt;/code&gt; event on the mouse&amp;rsquo;s current position.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/move/&#34;&gt;move(x, y[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches a &lt;code&gt;mousemove&lt;/code&gt; event on the mouse&amp;rsquo;s current position.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
            type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  }
}

export default async function () {
  const page = await browser.newPage();

  await page.goto(&amp;#39;https://test.k6.io/&amp;#39;, {
    waitUntil: &amp;#39;networkidle&amp;#39;
});

  // Obtain ElementHandle for news link and navigate to it
  // by clicking in the &amp;#39;a&amp;#39; element&amp;#39;s bounding box
  const newsLinkBox = await page.$(&amp;#39;a[href=&amp;#34;/news.php&amp;#34;]&amp;#39;);
  const boundingBox = await newsLinkBox.boundingBox();
  const x = newsLinkBox.x &amp;#43; newsLinkBox.width / 2; // center of the box
  const y = newsLinkBox.y;

  await page.mouse.click(x, y);

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="mouse">Mouse&lt;/h1>
&lt;p>&lt;code>Mouse&lt;/code> provides a way to interact with a virtual mouse.&lt;/p>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Method&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/click/">click(x, y[, options])&lt;/a>&lt;/td>
&lt;td>Mouse clicks on the &lt;code>x&lt;/code> and &lt;code>y&lt;/code> coordinates.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/dblclick/">dblclick(x, y[, options])&lt;/a>&lt;/td>
&lt;td>Mouse double clicks on the &lt;code>x&lt;/code> and &lt;code>y&lt;/code> coordinates.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/down/">down([options])&lt;/a>&lt;/td>
&lt;td>Dispatches a &lt;code>mousedown&lt;/code> event on the mouse&amp;rsquo;s current position.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/up/">up([options])&lt;/a>&lt;/td>
&lt;td>Dispatches a &lt;code>mouseup&lt;/code> event on the mouse&amp;rsquo;s current position.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/move/">move(x, y[, options])&lt;/a>&lt;/td>
&lt;td>Dispatches a &lt;code>mousemove&lt;/code> event on the mouse&amp;rsquo;s current position.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h3 id="example">Example&lt;/h3>
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">import { browser } from &amp;#39;k6/browser&amp;#39;;
export const options = {
scenarios: {
ui: {
executor: &amp;#39;shared-iterations&amp;#39;,
options: {
browser: {
type: &amp;#39;chromium&amp;#39;,
},
},
},
}
}
export default async function () {
const page = await browser.newPage();
await page.goto(&amp;#39;https://test.k6.io/&amp;#39;, {
waitUntil: &amp;#39;networkidle&amp;#39;
});
// Obtain ElementHandle for news link and navigate to it
// by clicking in the &amp;#39;a&amp;#39; element&amp;#39;s bounding box
const newsLinkBox = await page.$(&amp;#39;a[href=&amp;#34;/news.php&amp;#34;]&amp;#39;);
const boundingBox = await newsLinkBox.boundingBox();
const x = newsLinkBox.x &amp;#43; newsLinkBox.width / 2; // center of the box
const y = newsLinkBox.y;
await page.mouse.click(x, y);
await page.close();
}&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div></description></item><item><title>Page</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/page/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/page/</guid><content><![CDATA[&lt;h1 id=&#34;page&#34;&gt;Page&lt;/h1&gt;
&lt;p&gt;Page provides methods to interact with a single tab in a running web browser. A single 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;BrowserContext&lt;/a&gt; can have many &lt;code&gt;pages&lt;/code&gt;.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/page-dollar/&#34;&gt;$(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Finds an element matching the specified &lt;code&gt;selector&lt;/code&gt; within the page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/page-doubledollar/&#34;&gt;$$(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Finds all elements matching the specified &lt;code&gt;selector&lt;/code&gt; within the page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/bringtofront/&#34;&gt;bringToFront()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Activates a browser tab.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/check/&#34;&gt;check(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Select the input checkbox.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/click/&#34;&gt;click(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Clicks on an element matching a &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/close/&#34;&gt;close()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Closes a tab that the &lt;code&gt;page&lt;/code&gt; is associated with.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/content/&#34;&gt;content()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Gets the HTML contents of the page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/context/&#34;&gt;context()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Gets the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;BrowserContext&lt;/a&gt; that the page belongs to.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/dblclick/&#34;&gt;dblclick(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;With the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/&#34;&gt;Mouse&lt;/a&gt;, double click on an element matching the provided &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/dispatchevent/&#34;&gt;dispatchEvent(selector, type, eventInit[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Dispatches HTML DOM event types e.g. &lt;code&gt;&#39;click&#39;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/emulatemedia/&#34;&gt;emulateMedia([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Changes the CSS media type and the color scheme feature.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/emulatevisiondeficiency/&#34;&gt;emulateVisionDeficiency(type)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Emulates your website with the specified vision deficiency &lt;code&gt;type&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/evaluate/&#34;&gt;evaluate(pageFunction[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the &lt;code&gt;pageFunction&lt;/code&gt; invocation.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/evaluatehandle/&#34;&gt;evaluateHandle(pageFunction[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the &lt;code&gt;pageFunction&lt;/code&gt; invocation as a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/&#34;&gt;JSHandle&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/fill/&#34;&gt;fill(selector, value[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fill an &lt;code&gt;input&lt;/code&gt;, &lt;code&gt;textarea&lt;/code&gt; or &lt;code&gt;contenteditable&lt;/code&gt; element with the provided value.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/focus/&#34;&gt;focus(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fetches an element with &lt;code&gt;selector&lt;/code&gt; and focuses on it.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/frames/&#34;&gt;frames()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns an array of frames on the page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/framelocator/&#34;&gt;frameLocator(selector)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/&#34;&gt;FrameLocator&lt;/a&gt; for the iframe matching the given &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/getattribute/&#34;&gt;getAttribute(selector, name[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the element attribute value for the given attribute name.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbyalttext/&#34;&gt;getByAltText(altText[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;alt&lt;/code&gt; attribute text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbylabel/&#34;&gt;getByLabel(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for form controls with the specified label text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbyplaceholder/&#34;&gt;getByPlaceholder(placeholder[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for input elements with the specified &lt;code&gt;placeholder&lt;/code&gt; attribute text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbyrole/&#34;&gt;getByRole(role[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified ARIA role.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbytestid/&#34;&gt;getByTestId(testId)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;data-testid&lt;/code&gt; attribute.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbytext/&#34;&gt;getByText(text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements containing the specified text.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbytitle/&#34;&gt;getByTitle(title[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a locator for elements with the specified &lt;code&gt;title&lt;/code&gt; attribute.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/goback/&#34;&gt;goBack([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Navigates back in the browser&amp;rsquo;s session history.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/goforward/&#34;&gt;goForward([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Navigates forward in the browser&amp;rsquo;s session history.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/goto/&#34;&gt;goto(url[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Navigates to the specified &lt;code&gt;url&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/hover/&#34;&gt;hover(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Hovers over an element matching &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/innerhtml/&#34;&gt;innerHTML(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.innerHTML&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/innertext/&#34;&gt;innerText(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.innerText&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/inputvalue/&#34;&gt;inputValue(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns &lt;code&gt;input.value&lt;/code&gt; for the selected &lt;code&gt;input&lt;/code&gt;, &lt;code&gt;textarea&lt;/code&gt; or &lt;code&gt;select&lt;/code&gt; element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/ischecked/&#34;&gt;isChecked(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks to see if the &lt;code&gt;checkbox&lt;/code&gt; &lt;code&gt;input&lt;/code&gt; type is selected or not.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/isclosed/&#34;&gt;isClosed()&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/878&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Checks if the page has been closed.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/isdisabled/&#34;&gt;isDisabled(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;disabled&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/iseditable/&#34;&gt;isEditable(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;editable&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/isenabled/&#34;&gt;isEnabled(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;enabled&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/ishidden/&#34;&gt;isHidden(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;hidden&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/isvisible/&#34;&gt;isVisible(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Checks if the element is &lt;code&gt;visible&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/keyboard/&#34;&gt;keyboard&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/&#34;&gt;Keyboard&lt;/a&gt; instance to interact with a virtual keyboard on the page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/locator/&#34;&gt;locator(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/locator/&#34;&gt;Locator&lt;/a&gt; for the given &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/mainframe/&#34;&gt;mainFrame()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the page&amp;rsquo;s main 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/&#34;&gt;Frame&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/mouse/&#34;&gt;mouse&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/&#34;&gt;Mouse&lt;/a&gt; instance to interact with a virtual mouse on the page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;on(event, handler)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Registers a handler to be called whenever the specified event occurs.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/opener/&#34;&gt;opener()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;page&lt;/code&gt; that opened the current &lt;code&gt;page&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/press/&#34;&gt;press(selector, key[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Focuses the element, and then presses the given &lt;code&gt;key&lt;/code&gt; on the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/&#34;&gt;Keyboard&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/reload/&#34;&gt;reload([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Reloads the current page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/route/&#34;&gt;route(url, handler)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Adds a route to the page to modify network requests made by that page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/screenshot/&#34;&gt;screenshot([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a buffer with the captured screenshot from the web browser.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/selectoption/&#34;&gt;selectOption(selector, values[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Selects one or more options which match the values from a &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/setcontent/&#34;&gt;setContent(html[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the supplied HTML string to the current page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/setchecked/&#34;&gt;setChecked(selector, checked[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the &lt;code&gt;checkbox&lt;/code&gt; or &lt;code&gt;radio&lt;/code&gt; input element&amp;rsquo;s value to the specified checked or unchecked state.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/setdefaultnavigationtimeout/&#34;&gt;setDefaultNavigationTimeout(timeout)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Changes the navigation timeout for 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/goto/&#34;&gt;page.goto(url[, options])&lt;/a&gt;, 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/reload/&#34;&gt;page.reload([options])&lt;/a&gt;, 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/setcontent/&#34;&gt;page.setContent(html[, options])&lt;/a&gt;, and 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitfornavigation/&#34;&gt;page.waitForNavigation([options])&lt;/a&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/setdefaulttimeout/&#34;&gt;setDefaultTimeout(timeout)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Changes the timeout for all the methods accepting a &lt;code&gt;timeout&lt;/code&gt; option.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/setextrahttpheaders/&#34;&gt;setExtraHTTPHeaders(headers)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets extra HTTP headers which will be sent with subsequent HTTP requests.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/setinputfiles/&#34;&gt;setInputFiles(selector, file[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Sets the file input element&amp;rsquo;s value to the specified files.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/setviewportsize/&#34;&gt;setViewportSize(viewportSize)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Updates the &lt;code&gt;page&lt;/code&gt;&amp;rsquo;s width and height.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/tap/&#34;&gt;tap(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Taps the first element that matches the &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/textcontent/&#34;&gt;textContent(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;element.textContent&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/throttlecpu/&#34;&gt;throttleCPU(cpuProfile)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Throttles the CPU in Chrome/Chromium to slow it down by the specified &lt;code&gt;rate&lt;/code&gt; in the &lt;code&gt;cpuProfile&lt;/code&gt; object.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/throttlenetwork/&#34;&gt;throttleNetwork(networkProfile)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Throttles the network in Chrome/Chromium to slow it down by the specified fields in the &lt;code&gt;networkProfile&lt;/code&gt; object.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/title/&#34;&gt;title()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;page&lt;/code&gt;&amp;rsquo;s title.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/type/&#34;&gt;type(selector, text[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Types the &lt;code&gt;text&lt;/code&gt; in the first element found that matches the &lt;code&gt;selector&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/touchscreen/&#34;&gt;touchscreen&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/touchscreen/&#34;&gt;Touchscreen&lt;/a&gt; instance to interact with a virtual touchscreen on the page.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/uncheck/&#34;&gt;uncheck(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Unselects an input &lt;code&gt;checkbox&lt;/code&gt; element.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/unroute/&#34;&gt;unroute(url)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Removes all existing routes for the &lt;code&gt;url&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/unrouteall/&#34;&gt;unrouteAll()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Removes all routes created with 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/route/&#34;&gt;&lt;code&gt;page.route()&lt;/code&gt;&lt;/a&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/url/&#34;&gt;url()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;page&lt;/code&gt;&amp;rsquo;s URL.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/viewportsize/&#34;&gt;viewportSize()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the &lt;code&gt;page&lt;/code&gt;&amp;rsquo;s size (width and height).&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforevent/&#34;&gt;waitForEvent(event[, optionsOrPredicate])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the specified event to be emitted.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforfunction/&#34;&gt;waitForFunction(pageFunction, options[, arg])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns when the &lt;code&gt;pageFunction&lt;/code&gt; returns a truthy value.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforloadstate/&#34;&gt;waitForLoadState(state[, options])&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/880&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Waits for the given load &lt;code&gt;state&lt;/code&gt; to be reached.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitfornavigation/&#34;&gt;waitForNavigation([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the given navigation lifecycle event to occur and returns the main resource response.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforrequest/&#34;&gt;waitForRequest(urlPattern[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for an HTTP request that matches the specified URL pattern.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforresponse/&#34;&gt;waitForResponse(urlPattern[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for an HTTP response that matches the specified URL pattern.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforselector/&#34;&gt;waitForSelector(selector[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns when element specified by selector satisfies &lt;code&gt;state&lt;/code&gt; option.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitfortimeout/&#34;&gt;waitForTimeout(timeout)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the given &lt;code&gt;timeout&lt;/code&gt; in milliseconds.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforurl/&#34;&gt;waitForURL(url[, options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Waits for the page to navigate to the specified URL.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/workers/&#34;&gt;workers()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns an array of the dedicated 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/worker/&#34;&gt;WebWorkers&lt;/a&gt; associated with the page.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="page">Page&lt;/h1>
&lt;p>Page provides methods to interact with a single tab in a running web browser. A single
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/">BrowserContext&lt;/a> can have many &lt;code>pages&lt;/code>.&lt;/p>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Method&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/page-dollar/">$(selector)&lt;/a>&lt;/td>
&lt;td>Finds an element matching the specified &lt;code>selector&lt;/code> within the page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/page-doubledollar/">$$(selector)&lt;/a>&lt;/td>
&lt;td>Finds all elements matching the specified &lt;code>selector&lt;/code> within the page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/bringtofront/">bringToFront()&lt;/a>&lt;/td>
&lt;td>Activates a browser tab.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/check/">check(selector[, options])&lt;/a>&lt;/td>
&lt;td>Select the input checkbox.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/click/">click(selector[, options])&lt;/a>&lt;/td>
&lt;td>Clicks on an element matching a &lt;code>selector&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/close/">close()&lt;/a>&lt;/td>
&lt;td>Closes a tab that the &lt;code>page&lt;/code> is associated with.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/content/">content()&lt;/a>&lt;/td>
&lt;td>Gets the HTML contents of the page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/context/">context()&lt;/a>&lt;/td>
&lt;td>Gets the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/">BrowserContext&lt;/a> that the page belongs to.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/dblclick/">dblclick(selector[, options])&lt;/a>&lt;/td>
&lt;td>With the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/">Mouse&lt;/a>, double click on an element matching the provided &lt;code>selector&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/dispatchevent/">dispatchEvent(selector, type, eventInit[, options])&lt;/a>&lt;/td>
&lt;td>Dispatches HTML DOM event types e.g. &lt;code>'click'&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/emulatemedia/">emulateMedia([options])&lt;/a>&lt;/td>
&lt;td>Changes the CSS media type and the color scheme feature.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/emulatevisiondeficiency/">emulateVisionDeficiency(type)&lt;/a>&lt;/td>
&lt;td>Emulates your website with the specified vision deficiency &lt;code>type&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/evaluate/">evaluate(pageFunction[, arg])&lt;/a>&lt;/td>
&lt;td>Returns the value of the &lt;code>pageFunction&lt;/code> invocation.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/evaluatehandle/">evaluateHandle(pageFunction[, arg])&lt;/a>&lt;/td>
&lt;td>Returns the value of the &lt;code>pageFunction&lt;/code> invocation as a
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/jshandle/">JSHandle&lt;/a>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/fill/">fill(selector, value[, options])&lt;/a>&lt;/td>
&lt;td>Fill an &lt;code>input&lt;/code>, &lt;code>textarea&lt;/code> or &lt;code>contenteditable&lt;/code> element with the provided value.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/focus/">focus(selector[, options])&lt;/a>&lt;/td>
&lt;td>Fetches an element with &lt;code>selector&lt;/code> and focuses on it.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/frames/">frames()&lt;/a>&lt;/td>
&lt;td>Returns an array of frames on the page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/framelocator/">frameLocator(selector)&lt;/a>&lt;/td>
&lt;td>Returns a
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/framelocator/">FrameLocator&lt;/a> for the iframe matching the given &lt;code>selector&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/getattribute/">getAttribute(selector, name[, options])&lt;/a>&lt;/td>
&lt;td>Returns the element attribute value for the given attribute name.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbyalttext/">getByAltText(altText[, options])&lt;/a>&lt;/td>
&lt;td>Returns a locator for elements with the specified &lt;code>alt&lt;/code> attribute text.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbylabel/">getByLabel(text[, options])&lt;/a>&lt;/td>
&lt;td>Returns a locator for form controls with the specified label text.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbyplaceholder/">getByPlaceholder(placeholder[, options])&lt;/a>&lt;/td>
&lt;td>Returns a locator for input elements with the specified &lt;code>placeholder&lt;/code> attribute text.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbyrole/">getByRole(role[, options])&lt;/a>&lt;/td>
&lt;td>Returns a locator for elements with the specified ARIA role.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbytestid/">getByTestId(testId)&lt;/a>&lt;/td>
&lt;td>Returns a locator for elements with the specified &lt;code>data-testid&lt;/code> attribute.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbytext/">getByText(text[, options])&lt;/a>&lt;/td>
&lt;td>Returns a locator for elements containing the specified text.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/getbytitle/">getByTitle(title[, options])&lt;/a>&lt;/td>
&lt;td>Returns a locator for elements with the specified &lt;code>title&lt;/code> attribute.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/goback/">goBack([options])&lt;/a>&lt;/td>
&lt;td>Navigates back in the browser&amp;rsquo;s session history.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/goforward/">goForward([options])&lt;/a>&lt;/td>
&lt;td>Navigates forward in the browser&amp;rsquo;s session history.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/goto/">goto(url[, options])&lt;/a>&lt;/td>
&lt;td>Navigates to the specified &lt;code>url&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/hover/">hover(selector[, options])&lt;/a>&lt;/td>
&lt;td>Hovers over an element matching &lt;code>selector&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/innerhtml/">innerHTML(selector[, options])&lt;/a>&lt;/td>
&lt;td>Returns the &lt;code>element.innerHTML&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/innertext/">innerText(selector[, options])&lt;/a>&lt;/td>
&lt;td>Returns the &lt;code>element.innerText&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/inputvalue/">inputValue(selector[, options])&lt;/a>&lt;/td>
&lt;td>Returns &lt;code>input.value&lt;/code> for the selected &lt;code>input&lt;/code>, &lt;code>textarea&lt;/code> or &lt;code>select&lt;/code> element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/ischecked/">isChecked(selector[, options])&lt;/a>&lt;/td>
&lt;td>Checks to see if the &lt;code>checkbox&lt;/code> &lt;code>input&lt;/code> type is selected or not.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/isclosed/">isClosed()&lt;/a> &lt;span class="bwipt" x-init="init()" x-data="bwipt()" :class="{ 'term-hover' : open }">
&lt;span x-ref="tooltip">
&lt;a
href="https://github.com/grafana/xk6-browser/issues/878"
target="_blank"
rel="noopener noreferrer"
>
&lt;svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle;">&lt;path fill-rule="evenodd" clip-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z" fill="#F37B2B">&lt;/path>&lt;/svg>
&lt;/a>
&lt;/span>
&lt;/span>
&lt;/td>
&lt;td>Checks if the page has been closed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/isdisabled/">isDisabled(selector[, options])&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>disabled&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/iseditable/">isEditable(selector[, options])&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>editable&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/isenabled/">isEnabled(selector[, options])&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>enabled&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/ishidden/">isHidden(selector[, options])&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>hidden&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/isvisible/">isVisible(selector[, options])&lt;/a>&lt;/td>
&lt;td>Checks if the element is &lt;code>visible&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/keyboard/">keyboard&lt;/a>&lt;/td>
&lt;td>Returns the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/">Keyboard&lt;/a> instance to interact with a virtual keyboard on the page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/locator/">locator(selector[, options])&lt;/a>&lt;/td>
&lt;td>Returns a
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/locator/">Locator&lt;/a> for the given &lt;code>selector&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/mainframe/">mainFrame()&lt;/a>&lt;/td>
&lt;td>Returns the page&amp;rsquo;s main
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/frame/">Frame&lt;/a>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/mouse/">mouse&lt;/a>&lt;/td>
&lt;td>Returns the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/mouse/">Mouse&lt;/a> instance to interact with a virtual mouse on the page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/">on(event, handler)&lt;/a>&lt;/td>
&lt;td>Registers a handler to be called whenever the specified event occurs.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/opener/">opener()&lt;/a>&lt;/td>
&lt;td>Returns the &lt;code>page&lt;/code> that opened the current &lt;code>page&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/press/">press(selector, key[, options])&lt;/a>&lt;/td>
&lt;td>Focuses the element, and then presses the given &lt;code>key&lt;/code> on the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/keyboard/">Keyboard&lt;/a>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/reload/">reload([options])&lt;/a>&lt;/td>
&lt;td>Reloads the current page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/route/">route(url, handler)&lt;/a>&lt;/td>
&lt;td>Adds a route to the page to modify network requests made by that page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/screenshot/">screenshot([options])&lt;/a>&lt;/td>
&lt;td>Returns a buffer with the captured screenshot from the web browser.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/selectoption/">selectOption(selector, values[, options])&lt;/a>&lt;/td>
&lt;td>Selects one or more options which match the values from a &lt;code>&amp;lt;select&amp;gt;&lt;/code> element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/setcontent/">setContent(html[, options])&lt;/a>&lt;/td>
&lt;td>Sets the supplied HTML string to the current page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/setchecked/">setChecked(selector, checked[, options])&lt;/a>&lt;/td>
&lt;td>Sets the &lt;code>checkbox&lt;/code> or &lt;code>radio&lt;/code> input element&amp;rsquo;s value to the specified checked or unchecked state.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/setdefaultnavigationtimeout/">setDefaultNavigationTimeout(timeout)&lt;/a>&lt;/td>
&lt;td>Changes the navigation timeout for
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/goto/">page.goto(url[, options])&lt;/a>,
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/reload/">page.reload([options])&lt;/a>,
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/setcontent/">page.setContent(html[, options])&lt;/a>, and
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitfornavigation/">page.waitForNavigation([options])&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/setdefaulttimeout/">setDefaultTimeout(timeout)&lt;/a>&lt;/td>
&lt;td>Changes the timeout for all the methods accepting a &lt;code>timeout&lt;/code> option.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/setextrahttpheaders/">setExtraHTTPHeaders(headers)&lt;/a>&lt;/td>
&lt;td>Sets extra HTTP headers which will be sent with subsequent HTTP requests.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/setinputfiles/">setInputFiles(selector, file[, options])&lt;/a>&lt;/td>
&lt;td>Sets the file input element&amp;rsquo;s value to the specified files.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/setviewportsize/">setViewportSize(viewportSize)&lt;/a>&lt;/td>
&lt;td>Updates the &lt;code>page&lt;/code>&amp;rsquo;s width and height.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/tap/">tap(selector[, options])&lt;/a>&lt;/td>
&lt;td>Taps the first element that matches the &lt;code>selector&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/textcontent/">textContent(selector[, options])&lt;/a>&lt;/td>
&lt;td>Returns the &lt;code>element.textContent&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/throttlecpu/">throttleCPU(cpuProfile)&lt;/a>&lt;/td>
&lt;td>Throttles the CPU in Chrome/Chromium to slow it down by the specified &lt;code>rate&lt;/code> in the &lt;code>cpuProfile&lt;/code> object.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/throttlenetwork/">throttleNetwork(networkProfile)&lt;/a>&lt;/td>
&lt;td>Throttles the network in Chrome/Chromium to slow it down by the specified fields in the &lt;code>networkProfile&lt;/code> object.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/title/">title()&lt;/a>&lt;/td>
&lt;td>Returns the &lt;code>page&lt;/code>&amp;rsquo;s title.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/type/">type(selector, text[, options])&lt;/a>&lt;/td>
&lt;td>Types the &lt;code>text&lt;/code> in the first element found that matches the &lt;code>selector&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/touchscreen/">touchscreen&lt;/a>&lt;/td>
&lt;td>Returns the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/touchscreen/">Touchscreen&lt;/a> instance to interact with a virtual touchscreen on the page.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/uncheck/">uncheck(selector[, options])&lt;/a>&lt;/td>
&lt;td>Unselects an input &lt;code>checkbox&lt;/code> element.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/unroute/">unroute(url)&lt;/a>&lt;/td>
&lt;td>Removes all existing routes for the &lt;code>url&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/unrouteall/">unrouteAll()&lt;/a>&lt;/td>
&lt;td>Removes all routes created with
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/route/">&lt;code>page.route()&lt;/code>&lt;/a>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/url/">url()&lt;/a>&lt;/td>
&lt;td>Returns the &lt;code>page&lt;/code>&amp;rsquo;s URL.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/viewportsize/">viewportSize()&lt;/a>&lt;/td>
&lt;td>Returns the &lt;code>page&lt;/code>&amp;rsquo;s size (width and height).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforevent/">waitForEvent(event[, optionsOrPredicate])&lt;/a>&lt;/td>
&lt;td>Waits for the specified event to be emitted.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforfunction/">waitForFunction(pageFunction, options[, arg])&lt;/a>&lt;/td>
&lt;td>Returns when the &lt;code>pageFunction&lt;/code> returns a truthy value.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforloadstate/">waitForLoadState(state[, options])&lt;/a> &lt;span class="bwipt" x-init="init()" x-data="bwipt()" :class="{ 'term-hover' : open }">
&lt;span x-ref="tooltip">
&lt;a
href="https://github.com/grafana/xk6-browser/issues/880"
target="_blank"
rel="noopener noreferrer"
>
&lt;svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle;">&lt;path fill-rule="evenodd" clip-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z" fill="#F37B2B">&lt;/path>&lt;/svg>
&lt;/a>
&lt;/span>
&lt;/span>
&lt;/td>
&lt;td>Waits for the given load &lt;code>state&lt;/code> to be reached.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitfornavigation/">waitForNavigation([options])&lt;/a>&lt;/td>
&lt;td>Waits for the given navigation lifecycle event to occur and returns the main resource response.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforrequest/">waitForRequest(urlPattern[, options])&lt;/a>&lt;/td>
&lt;td>Waits for an HTTP request that matches the specified URL pattern.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforresponse/">waitForResponse(urlPattern[, options])&lt;/a>&lt;/td>
&lt;td>Waits for an HTTP response that matches the specified URL pattern.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforselector/">waitForSelector(selector[, options])&lt;/a>&lt;/td>
&lt;td>Returns when element specified by selector satisfies &lt;code>state&lt;/code> option.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitfortimeout/">waitForTimeout(timeout)&lt;/a>&lt;/td>
&lt;td>Waits for the given &lt;code>timeout&lt;/code> in milliseconds.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforurl/">waitForURL(url[, options])&lt;/a>&lt;/td>
&lt;td>Waits for the page to navigate to the specified URL.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/workers/">workers()&lt;/a>&lt;/td>
&lt;td>Returns an array of the dedicated
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/worker/">WebWorkers&lt;/a> associated with the page.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>Request</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/request/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/request/</guid><content><![CDATA[&lt;h1 id=&#34;request&#34;&gt;Request&lt;/h1&gt;
&lt;p&gt;The request that the browser performs can be retrieved from the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/&#34;&gt;Response&lt;/a&gt; when a navigation occurs.&lt;/p&gt;


&lt;div data-shared=&#34;browser-module-wip.md&#34;&gt;
            

&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/div&gt;

        
&lt;h2 id=&#34;supported-apis&#34;&gt;Supported APIs&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/allheaders/&#34;&gt;allHeaders()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns an object of headers associated to the request including headers added by the browser.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/frame/&#34;&gt;frame()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;The 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/&#34;&gt;Frame&lt;/a&gt; that initiated the request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/headers/&#34;&gt;headers()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns an object of headers associated to the request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/headersarray/&#34;&gt;headersArray()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;An array with all the request HTTP headers.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/headervalue/&#34;&gt;headerValue(name)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the header matching the name. The name is case insensitive.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/isnavigationrequest/&#34;&gt;isNavigationRequest()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a boolean stating whether the request is for a navigation.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/method/&#34;&gt;method()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Request&amp;rsquo;s method (GET, POST, etc.).&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/postdata/&#34;&gt;postData()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Contains the request&amp;rsquo;s post body, if any.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/postdatabuffer/&#34;&gt;postDataBuffer()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Request&amp;rsquo;s post body in a binary form, if any.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/resourcetype/&#34;&gt;resourceType()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Contains the request&amp;rsquo;s resource type as it was perceived by the rendering engine.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/response/&#34;&gt;response()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the matching 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/&#34;&gt;Response&lt;/a&gt; object.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/size/&#34;&gt;size()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns an object containing the size of the request headers and body.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/timing/&#34;&gt;timing()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns resource timing information for given request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/url/&#34;&gt;url()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;URL of the request.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    const res = await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);
    const req = res.request();
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="request">Request&lt;/h1>
&lt;p>The request that the browser performs can be retrieved from the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/response/">Response&lt;/a> when a navigation occurs.&lt;/p>
&lt;div data-shared="browser-module-wip.md">
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p></description></item><item><title>Response</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/response/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/response/</guid><content><![CDATA[&lt;h1 id=&#34;response&#34;&gt;Response&lt;/h1&gt;
&lt;p&gt;Response represents a response received by the page.&lt;/p&gt;


&lt;div data-shared=&#34;browser-module-wip.md&#34;&gt;
            

&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/div&gt;

        
&lt;h2 id=&#34;supported-apis&#34;&gt;Supported APIs&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/allheaders/&#34;&gt;allHeaders()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns an object of headers associated to the response including headers added by the browser.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/body/&#34;&gt;body()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the response body.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/frame/&#34;&gt;frame()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;The 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/frame/&#34;&gt;Frame&lt;/a&gt; that initiated the request which this response is associated to.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/headers/&#34;&gt;headers()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns an object of headers associated to the response.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/headersarray/&#34;&gt;headersArray()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;An array with all the response HTTP headers.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/headervalue/&#34;&gt;headerValue(name)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the value of the header matching the name. The name is case insensitive.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/headervalues/&#34;&gt;headerValues(name)&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns all values of the headers matching the name, for example &lt;code&gt;set-cookie&lt;/code&gt;. The name is case insensitive.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/json/&#34;&gt;json()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the JSON representation of response body.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/ok/&#34;&gt;ok()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns a &lt;code&gt;boolean&lt;/code&gt; stating whether the response was successful or not.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/request/&#34;&gt;request()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the matching 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/&#34;&gt;Request&lt;/a&gt; object.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/securitydetails/&#34;&gt;securityDetails()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns SSL and other security information.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/serveraddr/&#34;&gt;serverAddr()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the IP address and port of the server for this response.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/status/&#34;&gt;status()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Contains the status code of the response (e.g., 200 for a success).&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/statustext/&#34;&gt;statusText()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Contains the status text of the response (e.g. usually an &amp;ldquo;OK&amp;rdquo; for a success).&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/size/&#34;&gt;size()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;The size of the response body and the headers.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/text/&#34;&gt;text()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the response body as a string.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/response/url/&#34;&gt;url()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;URL of the response.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    // Response returned once goto resolves.
    const res = await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="response">Response&lt;/h1>
&lt;p>Response represents a response received by the page.&lt;/p>
&lt;div data-shared="browser-module-wip.md">
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p></description></item><item><title>Route</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/route/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/route/</guid><content><![CDATA[&lt;h1 id=&#34;route&#34;&gt;Route&lt;/h1&gt;
&lt;p&gt;Route represents a network request intercepted by the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/route/&#34;&gt;&lt;code&gt;page.route()&lt;/code&gt;&lt;/a&gt; function and allows to modify its behavior. Once routing is enabled, every request intercepted by a route will stall unless it&amp;rsquo;s continued, fulfilled or aborted.&lt;/p&gt;
&lt;p&gt;When several routes match the given pattern, only the last registered route handler will run, and all others will be skipped.&lt;/p&gt;
&lt;h2 id=&#34;supported-apis&#34;&gt;Supported APIs&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/route/abort/&#34;&gt;abort([errorCode])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Aborts the route&amp;rsquo;s request.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/route/continue/&#34;&gt;continue([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Continues the request with optional overrides.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/route/fulfill/&#34;&gt;fulfill([options])&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fulfills the request with the given response&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/route/request/&#34;&gt;request()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the matching 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/&#34;&gt;Request&lt;/a&gt; object.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;
&lt;!-- md-k6:skip --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // Abort all images requests
  await page.route(/(\.png$)|(\.jpg$)/, async function (route) {
    await route.abort();
  });

  // Fulfill request with the following response which
  // changes the quotes displayed on the page
  await page.route(/.*\/quotes$/, async function (route) {
    await route.fulfill({
      body: JSON.stringify({
        quotes: [&amp;#39;&amp;#34;We ❤️ pizza&amp;#34; - k6 team&amp;#39;],
      }),
    });
  });

  // Change the pizza request when the button is clicked
  await page.route(/.*\/pizza$/, async function (route) {
    await route.continue({
      headers: {
        ...route.request().headers(),
        foo: &amp;#39;bar&amp;#39;,
      },
      method: &amp;#39;POST&amp;#39;,
      postData: JSON.stringify({
        maxCaloriesPerSlice: 500,
        mustBeVegetarian: true,
        excludedIngredients: [&amp;#39;Pineapple&amp;#39;],
        excludedTools: [&amp;#39;Knife&amp;#39;, &amp;#39;Scissors&amp;#39;],
        maxNumberOfToppings: 1,
        minNumberOfToppings: 1,
        customName: &amp;#39;Classic Pizza&amp;#39;,
      }),
    });
  });

  await page.goto(&amp;#39;https://quickpizza.grafana.com/&amp;#39;);

  await page.getByRole(&amp;#39;button&amp;#39;, { name: &amp;#39;Pizza, Please!&amp;#39; }).click();

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="route">Route&lt;/h1>
&lt;p>Route represents a network request intercepted by the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/route/">&lt;code>page.route()&lt;/code>&lt;/a> function and allows to modify its behavior. Once routing is enabled, every request intercepted by a route will stall unless it&amp;rsquo;s continued, fulfilled or aborted.&lt;/p></description></item><item><title>Touchscreen</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/touchscreen/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/touchscreen/</guid><content><![CDATA[&lt;h1 id=&#34;touchscreen&#34;&gt;Touchscreen&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;Touchscreen&lt;/code&gt; class allows to interact with a virtual touchscreen. A &lt;code&gt;Touchscreen&lt;/code&gt; instance can be obtained by calling the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/touchscreen/&#34;&gt;&lt;code&gt;page.touchscreen&lt;/code&gt;&lt;/a&gt; method.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/touchscreen/tap/&#34;&gt;tap()&lt;/a&gt; &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/436&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;Simulates a tap.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="touchscreen">Touchscreen&lt;/h1>
&lt;p>The &lt;code>Touchscreen&lt;/code> class allows to interact with a virtual touchscreen. A &lt;code>Touchscreen&lt;/code> instance can be obtained by calling the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/touchscreen/">&lt;code>page.touchscreen&lt;/code>&lt;/a> method.&lt;/p>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Method&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/touchscreen/tap/">tap()&lt;/a> &lt;span class="bwipt" x-init="init()" x-data="bwipt()" :class="{ 'term-hover' : open }">
&lt;span x-ref="tooltip">
&lt;a
href="https://github.com/grafana/xk6-browser/issues/436"
target="_blank"
rel="noopener noreferrer"
>
&lt;svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" style="vertical-align: middle;">&lt;path fill-rule="evenodd" clip-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z" fill="#F37B2B">&lt;/path>&lt;/svg>
&lt;/a>
&lt;/span>
&lt;/span>
&lt;/td>
&lt;td>Simulates a tap.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>Worker</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/worker/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/worker/</guid><content><![CDATA[&lt;h1 id=&#34;worker&#34;&gt;Worker&lt;/h1&gt;


&lt;div data-shared=&#34;browser-module-wip.md&#34;&gt;
            

&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;/div&gt;

        
&lt;p&gt;Represents a Web Worker or a Service Worker within the browser context.&lt;/p&gt;
&lt;h2 id=&#34;supported-apis&#34;&gt;Supported APIs&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;k6 Class&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/worker/url/&#34;&gt;url()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Returns the URL of the web worker.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;
&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    await page.goto(&amp;#39;https://test.k6.io/browser.php&amp;#39;);
    console.log(page.workers());
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="worker">Worker&lt;/h1>
&lt;div data-shared="browser-module-wip.md">
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>This API is a work in progress. Some of the following functionalities might behave unexpectedly.&lt;/p>&lt;/blockquote>&lt;/div>
&lt;/div>
&lt;p>Represents a Web Worker or a Service Worker within the browser context.&lt;/p></description></item><item><title>close()</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/close/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/close/</guid><content><![CDATA[&lt;h1 id=&#34;close&#34;&gt;close()&lt;/h1&gt;
&lt;p&gt;Closes the connection to the browser, along with all of its 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;BrowserContext&lt;/a&gt;s and 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;Page&lt;/a&gt;s.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;This method is only available on a browser returned by 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/chromium/connectovercdp/&#34;&gt;&lt;code&gt;chromium.connectOverCDP()&lt;/code&gt;&lt;/a&gt;. The k6-managed 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;&lt;code&gt;browser&lt;/code&gt;&lt;/a&gt; doesn&amp;rsquo;t expose &lt;code&gt;close()&lt;/code&gt;, because k6 owns its lifecycle.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Calling this method is optional. k6 closes the connection at the end of the iteration either way, so use &lt;code&gt;close()&lt;/code&gt; only when you want to release it earlier. Closing an already closed browser is a no-op.&lt;/p&gt;
&lt;p&gt;Since you manage the browser, closing the connection doesn&amp;rsquo;t stop the browser itself, which keeps running and stays available to later iterations.&lt;/p&gt;
&lt;p&gt;Using the browser after you close it throws an error, so treat &lt;code&gt;close()&lt;/code&gt; as the last thing you do with it.&lt;/p&gt;
&lt;h3 id=&#34;returns&#34;&gt;Returns&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;Promise&amp;lt;void&amp;gt;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;A Promise that fulfills when the browser connection is closed.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;
&lt;!-- md-k6:skip --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { chromium } from &amp;#39;k6/browser&amp;#39;;

export default async function () {
  const browser = await chromium.connectOverCDP(__ENV.CDP_WS_URL);
  const page = await browser.newPage();

  try {
    await page.goto(&amp;#39;https://quickpizza.grafana.com/&amp;#39;);
  } finally {
    await page.close();
    await browser.close(); // releases the connection, the browser keeps running
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;related&#34;&gt;Related&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/isconnected/&#34;&gt;browser.isConnected&lt;/a&gt; - Check whether the CDP connection is still active&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/chromium/connectovercdp/&#34;&gt;chromium.connectOverCDP()&lt;/a&gt; - Attach to an existing browser over CDP&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="close">close()&lt;/h1>
&lt;p>Closes the connection to the browser, along with all of its
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/">BrowserContext&lt;/a>s and
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/">Page&lt;/a>s.&lt;/p>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>This method is only available on a browser returned by
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/chromium/connectovercdp/">&lt;code>chromium.connectOverCDP()&lt;/code>&lt;/a>. The k6-managed
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/">&lt;code>browser&lt;/code>&lt;/a> doesn&amp;rsquo;t expose &lt;code>close()&lt;/code>, because k6 owns its lifecycle.&lt;/p></description></item><item><title>closeContext()</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/closecontext/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/closecontext/</guid><content><![CDATA[&lt;h1 id=&#34;closecontext&#34;&gt;closeContext()&lt;/h1&gt;
&lt;p&gt;Closes the current 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;BrowserContext&lt;/a&gt;. If there is no active browser context, because none has been created yet or because it has been previously closed, this method throws an error.&lt;/p&gt;
&lt;h3 id=&#34;returns&#34;&gt;Returns&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;Promise&amp;lt;void&amp;gt;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;A Promise that fulfills when the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;&lt;code&gt;BrowserContext&lt;/code&gt;&lt;/a&gt; is closed.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page1 = await browser.newPage({
    isMobile: true,
  }); // implicitly creates a new context

  await page1.goto(&amp;#39;https:/test.k6.io/&amp;#39;);
  page1.close();
  await browser.closeContext(); // closes the context created on newPage

  const page2 = await browser.newPage({
    isMobile: false,
  }); // creates a new context with different settings

  await page2.goto(&amp;#39;https://test.k6.io/&amp;#39;);
  page2.close();
  await browser.closeContext();

  await browser.closeContext(); // throws an error as browser has no active context
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="closecontext">closeContext()&lt;/h1>
&lt;p>Closes the current
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/">BrowserContext&lt;/a>. If there is no active browser context, because none has been created yet or because it has been previously closed, this method throws an error.&lt;/p></description></item><item><title>context()</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/context/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/context/</guid><content><![CDATA[&lt;h1 id=&#34;context&#34;&gt;context()&lt;/h1&gt;
&lt;p&gt;Returns the current 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;BrowserContext&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;A 1-to-1 mapping between 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;Browser&lt;/a&gt; and &lt;code&gt;BrowserContext&lt;/code&gt; means you cannot run &lt;code&gt;BrowserContexts&lt;/code&gt; concurrently. If you wish to create a new &lt;code&gt;BrowserContext&lt;/code&gt; while one already exists, you will need to 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/close/&#34;&gt;close&lt;/a&gt; the current one, and create a new one with either 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/newcontext/&#34;&gt;newContext&lt;/a&gt; or 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/newpage/&#34;&gt;newPage&lt;/a&gt;. All resources associated to the closed &lt;code&gt;BrowserContext&lt;/code&gt; will also be closed and cleaned up (such as 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;Page&lt;/a&gt;s).&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;returns&#34;&gt;Returns&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;object | null&lt;/td&gt;
              &lt;td&gt;The current 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;BrowserContext&lt;/a&gt; if one has been created, otherwise &lt;code&gt;null&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  console.log(browser.context()); // null

  const page1 = await browser.newPage(); // implicitly creates a new browserContext
  const context = browser.context(); // underlying live browserContext associated with browser
  const page2 = await context.newPage(); // shares the browserContext with page1

  page1.close();
  page2.close();
  await context.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="context">context()&lt;/h1>
&lt;p>Returns the current
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/">BrowserContext&lt;/a>.&lt;/p>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>A 1-to-1 mapping between
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/">Browser&lt;/a> and &lt;code>BrowserContext&lt;/code> means you cannot run &lt;code>BrowserContexts&lt;/code> concurrently. If you wish to create a new &lt;code>BrowserContext&lt;/code> while one already exists, you will need to
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/close/">close&lt;/a> the current one, and create a new one with either
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/newcontext/">newContext&lt;/a> or
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/newpage/">newPage&lt;/a>. All resources associated to the closed &lt;code>BrowserContext&lt;/code> will also be closed and cleaned up (such as
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/">Page&lt;/a>s).&lt;/p></description></item><item><title>isConnected()</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/isconnected/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/isconnected/</guid><content><![CDATA[&lt;h1 id=&#34;isconnected&#34;&gt;isConnected()&lt;/h1&gt;


&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;This feature has &lt;strong&gt;known issues&lt;/strong&gt;.
For details, refer to &lt;a href=&#34;https://github.com/grafana/xk6-browser/issues/453&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#453&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Indicates whether the &lt;a href=&#34;https://chromedevtools.github.io/devtools-protocol/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CDP&lt;/a&gt; connection to the browser process is active or not.&lt;/p&gt;
&lt;h3 id=&#34;returns&#34;&gt;Returns&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;Returns &lt;code&gt;true&lt;/code&gt; if the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;browser module&lt;/a&gt; is connected to the browser application. Otherwise, returns &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default function () {
  const isConnected = browser.isConnected();
  console.log(isConnected); // true
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="isconnected">isConnected()&lt;/h1>
&lt;div class="admonition admonition-caution">&lt;blockquote>&lt;p class="title text-uppercase">Caution&lt;/p>&lt;p>This feature has &lt;strong>known issues&lt;/strong>.
For details, refer to &lt;a href="https://github.com/grafana/xk6-browser/issues/453" target="_blank" rel="noopener noreferrer">#453&lt;/a>.&lt;/p>&lt;/blockquote>&lt;/div>
&lt;p>Indicates whether the &lt;a href="https://chromedevtools.github.io/devtools-protocol/" target="_blank" rel="noopener noreferrer">CDP&lt;/a> connection to the browser process is active or not.&lt;/p></description></item><item><title>newContext([options])</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/newcontext/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/newcontext/</guid><content><![CDATA[&lt;h1 id=&#34;newcontextoptions&#34;&gt;newContext([options])&lt;/h1&gt;
&lt;p&gt;Creates and returns a new 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;BrowserContext&lt;/a&gt;, if one hasn&amp;rsquo;t already been initialized for the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;Browser&lt;/a&gt;. If one has already been initialized an error is thrown.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;A 1-to-1 mapping between 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;Browser&lt;/a&gt; and &lt;code&gt;BrowserContext&lt;/code&gt; means you cannot run &lt;code&gt;BrowserContexts&lt;/code&gt; concurrently. Due to this restriction, if one already exists, it must be 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/close/&#34;&gt;close&lt;/a&gt;d first before creating a new one.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Parameter&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;options&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.bypassCSP&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to bypass a page&amp;rsquo;s Content-Security-Policy.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.colorScheme&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&#39;light&#39;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to display a page in dark or light mode by emulating the &amp;lsquo;prefers-colors-scheme&amp;rsquo; media feature. It can be one of &lt;code&gt;&#39;light&#39;&lt;/code&gt;, &lt;code&gt;&#39;dark&#39;&lt;/code&gt;, &lt;code&gt;&#39;no-preference&#39;&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.deviceScaleFactor &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/433&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets the resolution ratio in physical pixels to the resolution in CSS pixels i.e. if set higher than &lt;code&gt;1&lt;/code&gt;, then images will look sharper on high pixel density screens. See an &lt;a href=&#34;#devicescalefactor-example&#34;&gt;example&lt;/a&gt; below.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.extraHTTPHeaders&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Contains additional HTTP headers to be sent with every request, where the keys are HTTP headers and values are HTTP header values.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.geolocation &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/435&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets the user&amp;rsquo;s geographical location.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.geolocation.latitude&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Latitude should be between &lt;code&gt;-90&lt;/code&gt; and &lt;code&gt;90&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.geolocation.longitude&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Longitude should be between &lt;code&gt;-180&lt;/code&gt; and &lt;code&gt;180&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.geolocation.accuracy&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Accuracy should only be a non-negative number. Defaults to &lt;code&gt;0&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.hasTouch &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/436&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to simulate a device with touch events.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.httpCredentials&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets the credentials for HTTP authentication using Basic Auth.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.httpCredentials.username&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&#39;&#39;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Username to pass to the web browser for Basic HTTP Authentication.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.httpCredentials.password&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&#39;&#39;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Password to pass to the web browser for Basic HTTP Authentication.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.ignoreHTTPSErrors&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to ignore HTTPS errors that may be caused by invalid certificates.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.isMobile&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to simulate a mobile device.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.javaScriptEnabled&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to activate JavaScript support for the context.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.locale&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;system&lt;/td&gt;
              &lt;td&gt;Specifies the user&amp;rsquo;s locale, such as &lt;code&gt;&#39;en-US&#39;&lt;/code&gt;, &lt;code&gt;&#39;tr-TR&#39;&lt;/code&gt;, etc.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.offline&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to emulate an offline network.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.permissions&lt;/td&gt;
              &lt;td&gt;Array&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Permissions to grant for the context&amp;rsquo;s pages. See 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/grantpermissions/&#34;&gt;browserContext.grantPermissions()&lt;/a&gt; for the options.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.proxy&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Network proxy settings to use for all pages in the context. See an &lt;a href=&#34;#proxy-example&#34;&gt;example&lt;/a&gt; below.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.proxy.server&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;-&lt;/td&gt;
              &lt;td&gt;Proxy server URL, including scheme and port, for example &lt;code&gt;http://proxy.test:8080&lt;/code&gt;. Required when &lt;code&gt;proxy&lt;/code&gt; is set.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.proxy.bypass&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;-&lt;/td&gt;
              &lt;td&gt;Comma-separated list of hosts to connect to directly, bypassing the proxy, for example &lt;code&gt;localhost,127.0.0.1&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.reducedMotion&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&#39;no-preference&#39;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Minimizes the amount of motion by emulating the &amp;lsquo;prefers-reduced-motion&amp;rsquo; media feature. It can be one of &lt;code&gt;&#39;reduce&#39;&lt;/code&gt; and &lt;code&gt;&#39;no-preference&#39;&lt;/code&gt;. See 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/emulatemedia/&#34;&gt;page.emulateMedia()&lt;/a&gt; for the options.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.screen&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;{&#39;width&#39;: 1280, &#39;height&#39;: 720}&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets a window screen size for all pages in the context. It can only be used when the viewport is set.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.screen.width&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;1280&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Page width in pixels.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.screen.height&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;720&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Page height in pixels.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.timezoneID&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;system&lt;/td&gt;
              &lt;td&gt;Changes the context&amp;rsquo;s timezone. See &lt;a href=&#34;https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;ICU&amp;rsquo;s metaZones.txt&lt;/a&gt; for a list of supported timezone IDs.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.userAgent&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;browser&lt;/td&gt;
              &lt;td&gt;Specifies the user agent to use in the context.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.viewport&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;{&#39;width&#39;: 1280, &#39;height&#39;: 720}&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets a viewport size for all pages in the context. &lt;code&gt;null&lt;/code&gt; disables the default viewport.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.viewport.width&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;1280&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Page width in pixels.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.viewport.height&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;720&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Page height in pixels.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;returns&#34;&gt;Returns&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;Promise&amp;lt;BrowserContext&amp;gt;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;A Promise that fulfills with a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;&lt;code&gt;BrowserContext&lt;/code&gt;&lt;/a&gt; object.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;devicescalefactor-example&#34;&gt;deviceScaleFactor example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const context = await browser.newContext({
    viewport: {
      width: 375,
      height: 812,
    },
    deviceScaleFactor: 3,
  });
  const page = await context.newPage();

  try {
    await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;proxy-example&#34;&gt;proxy example&lt;/h3&gt;
&lt;p&gt;Route the context&amp;rsquo;s traffic through a proxy server:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const context = await browser.newContext({
    proxy: {
      server: &amp;#39;http://proxy.test:8080&amp;#39;,
      bypass: &amp;#39;localhost,127.0.0.1&amp;#39;,
    },
  });
  const page = await context.newPage();

  try {
    await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="newcontextoptions">newContext([options])&lt;/h1>
&lt;p>Creates and returns a new
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/">BrowserContext&lt;/a>, if one hasn&amp;rsquo;t already been initialized for the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/">Browser&lt;/a>. If one has already been initialized an error is thrown.&lt;/p>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p></description></item><item><title>newPage([options])</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/newpage/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/newpage/</guid><content><![CDATA[&lt;h1 id=&#34;newpageoptions&#34;&gt;newPage([options])&lt;/h1&gt;
&lt;p&gt;Creates and returns a new 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;Page&lt;/a&gt; in a new 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/&#34;&gt;BrowserContext&lt;/a&gt; if a &lt;code&gt;BrowserContext&lt;/code&gt; hasn&amp;rsquo;t already been initialized for the 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;Browser&lt;/a&gt;. If a &lt;code&gt;BrowserContext&lt;/code&gt; has already been initialized an error is thrown.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;A 1-to-1 mapping between 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/&#34;&gt;Browser&lt;/a&gt; and &lt;code&gt;BrowserContext&lt;/code&gt; means you cannot run &lt;code&gt;BrowserContexts&lt;/code&gt; concurrently. Due to this restriction, if one already exists, it must be 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/context/&#34;&gt;retrieved&lt;/a&gt; and 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/close/&#34;&gt;close&lt;/a&gt;d first before creating a new one.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;



&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Pages that have been opened ought to be closed using 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/close/&#34;&gt;&lt;code&gt;Page.close&lt;/code&gt;&lt;/a&gt;. Pages left open could potentially distort the results of Web Vital metrics.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Parameter&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;options&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.bypassCSP&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to bypass a page&amp;rsquo;s Content-Security-Policy.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.colorScheme&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&#39;light&#39;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to display a page in dark or light mode by emulating the &amp;lsquo;prefers-colors-scheme&amp;rsquo; media feature. It can be one of &lt;code&gt;&#39;light&#39;&lt;/code&gt;, &lt;code&gt;&#39;dark&#39;&lt;/code&gt;, &lt;code&gt;&#39;no-preference&#39;&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.deviceScaleFactor &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/433&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets the resolution ratio in physical pixels to the resolution in CSS pixels i.e. if set higher than &lt;code&gt;1&lt;/code&gt;, then images will look sharper on high pixel density screens. See an &lt;a href=&#34;#devicescalefactor-example&#34;&gt;example&lt;/a&gt; below.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.extraHTTPHeaders&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Contains additional HTTP headers to be sent with every request, where the keys are HTTP headers and values are HTTP header values.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.geolocation &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/435&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets the user&amp;rsquo;s geographical location.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.geolocation.latitude&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Latitude should be between &lt;code&gt;-90&lt;/code&gt; and &lt;code&gt;90&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.geolocation.longitude&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Longitude should be between &lt;code&gt;-180&lt;/code&gt; and &lt;code&gt;180&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.geolocation.accuracy&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Accuracy should only be a non-negative number. Defaults to &lt;code&gt;0&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.hasTouch &lt;span class=&#34;bwipt&#34; x-init=&#34;init()&#34; x-data=&#34;bwipt()&#34; :class=&#34;{ &#39;term-hover&#39; : open }&#34;&gt;
  &lt;span x-ref=&#34;tooltip&#34;&gt;
    &lt;a
      href=&#34;https://github.com/grafana/xk6-browser/issues/436&#34;
      target=&#34;_blank&#34;
      rel=&#34;noopener noreferrer&#34;
    &gt;
      &lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 16 16&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;vertical-align: middle;&#34;&gt;&lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3-11v1.17c0 .33-.106.651-.306.923L9.297 8l1.397 1.907c.2.272.306.594.306.924V12H5v-1.17c0-.33.106-.651.306-.923L6.703 8 5.306 6.093A1.553 1.553 0 0 1 5 5.169V4h6Zm-1.421 6.923a.567.567 0 0 0-.11-.336L8.26 8.939a.31.31 0 0 0-.113-.095.333.333 0 0 0-.408.095l-1.208 1.648a.567.567 0 0 0-.11.335v.19h3.157v-.19Z&#34; fill=&#34;#F37B2B&#34;&gt;&lt;/path&gt;&lt;/svg&gt;
    &lt;/a&gt;
  &lt;/span&gt;
&lt;/span&gt;
&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to simulate a device with touch events.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.httpCredentials&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets the credentials for HTTP authentication using Basic Auth.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.httpCredentials.username&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&#39;&#39;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Username to pass to the web browser for Basic HTTP Authentication.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.httpCredentials.password&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&#39;&#39;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Password to pass to the web browser for Basic HTTP Authentication.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.ignoreHTTPSErrors&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to ignore HTTPS errors that may be caused by invalid certificates.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.isMobile&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to simulate a mobile device.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.javaScriptEnabled&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to activate JavaScript support for the context.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.locale&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;system&lt;/td&gt;
              &lt;td&gt;Specifies the user&amp;rsquo;s locale, such as &lt;code&gt;&#39;en-US&#39;&lt;/code&gt;, &lt;code&gt;&#39;tr-TR&#39;&lt;/code&gt;, etc.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.offline&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Whether to emulate an offline network.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.permissions&lt;/td&gt;
              &lt;td&gt;Array&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Permissions to grant for the context&amp;rsquo;s pages. See 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/grantpermissions/&#34;&gt;browserContext.grantPermissions()&lt;/a&gt; for the options.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.proxy&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Network proxy settings to use for the page&amp;rsquo;s context.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.proxy.server&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;-&lt;/td&gt;
              &lt;td&gt;Proxy server URL, including scheme and port, for example &lt;code&gt;http://proxy.test:8080&lt;/code&gt;. Required when &lt;code&gt;proxy&lt;/code&gt; is set.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.proxy.bypass&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;-&lt;/td&gt;
              &lt;td&gt;Comma-separated list of hosts to connect to directly, bypassing the proxy, for example &lt;code&gt;localhost,127.0.0.1&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.reducedMotion&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&#39;no-preference&#39;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Minimizes the amount of motion by emulating the &amp;lsquo;prefers-reduced-motion&amp;rsquo; media feature. It can be one of &lt;code&gt;&#39;reduce&#39;&lt;/code&gt; and &lt;code&gt;&#39;no-preference&#39;&lt;/code&gt;. See 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/emulatemedia/&#34;&gt;page.emulateMedia()&lt;/a&gt; for the options.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.screen&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;{&#39;width&#39;: 1280, &#39;height&#39;: 720}&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets a window screen size for all pages in the context. It can only be used when the viewport is set.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.screen.width&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;1280&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Page width in pixels.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.screen.height&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;720&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Page height in pixels.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.timezoneID&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;system&lt;/td&gt;
              &lt;td&gt;Changes the context&amp;rsquo;s timezone. See &lt;a href=&#34;https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;ICU&amp;rsquo;s metaZones.txt&lt;/a&gt; for a list of supported timezone IDs.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.userAgent&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;browser&lt;/td&gt;
              &lt;td&gt;Specifies the user agent to use in the context.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.viewport&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;{&#39;width&#39;: 1280, &#39;height&#39;: 720}&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Sets a viewport size for all pages in the context. &lt;code&gt;null&lt;/code&gt; disables the default viewport.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.viewport.width&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;1280&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Page width in pixels.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;options.viewport.height&lt;/td&gt;
              &lt;td&gt;number&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;720&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Page height in pixels.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;returns&#34;&gt;Returns&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;Promise&amp;lt;Page&amp;gt;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;A Promise that fulfills with a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/&#34;&gt;&lt;code&gt;Page&lt;/code&gt;&lt;/a&gt; object.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;devicescalefactor-example&#34;&gt;deviceScaleFactor example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage({
    viewport: {
      width: 375,
      height: 812,
    },
    deviceScaleFactor: 3,
  });

  try {
    await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);
  } finally {
    await page.close();
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="newpageoptions">newPage([options])&lt;/h1>
&lt;p>Creates and returns a new
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/page/">Page&lt;/a> in a new
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/browsercontext/">BrowserContext&lt;/a> if a &lt;code>BrowserContext&lt;/code> hasn&amp;rsquo;t already been initialized for the
&lt;a href="/docs/k6/v2.3.x/javascript-api/k6-browser/">Browser&lt;/a>. If a &lt;code>BrowserContext&lt;/code> has already been initialized an error is thrown.&lt;/p></description></item><item><title>page.on("requestfailed")</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/requestfailed/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/requestfailed/</guid><content><![CDATA[&lt;h1 id=&#34;pageonrequestfailed&#34;&gt;page.on(&amp;ldquo;requestfailed&amp;rdquo;)&lt;/h1&gt;
&lt;p&gt;Subscribe to the &lt;code&gt;requestfailed&lt;/code&gt; event, which fires when a network request fails to reach the server.&lt;/p&gt;
&lt;p&gt;This event is triggered when requests encounter network-level failures such as DNS errors, connection refused, timeouts, or other network problems. It does &lt;strong&gt;not&lt;/strong&gt; fire for HTTP 4xx/5xx responses, which are considered successful network requests.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Parameter&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;event&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The event name: &lt;code&gt;&amp;quot;requestfailed&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;handler&lt;/td&gt;
              &lt;td&gt;function&lt;/td&gt;
              &lt;td&gt;A callback function that receives a Request object&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;handler-parameters&#34;&gt;Handler Parameters&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Parameter&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;request&lt;/td&gt;
              &lt;td&gt;Request&lt;/td&gt;
              &lt;td&gt;The failed Request object&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;request-object-properties&#34;&gt;Request Object Properties&lt;/h3&gt;
&lt;p&gt;The handler receives a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/&#34;&gt;Request&lt;/a&gt; object with the following useful properties:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Property&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;request.url()&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The URL of the request&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;request.method()&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The HTTP method (GET, POST, PUT, DELETE, etc.)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;request.resourceType()&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The type of resource (document, stylesheet, image, etc.)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;request.failure()&lt;/td&gt;
              &lt;td&gt;object&lt;/td&gt;
              &lt;td&gt;Information about the failure (see below)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;request-failure-information&#34;&gt;Request Failure Information&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;request.failure()&lt;/code&gt; method returns an object with the following property:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Property&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;failure.errorText&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;Text describing the error that caused the request to fail&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;examples&#34;&gt;Examples&lt;/h3&gt;
&lt;h4 id=&#34;basic-usage&#34;&gt;Basic usage&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // Track all failed requests
  const failedRequests = [];

  page.on(&amp;#39;requestfailed&amp;#39;, (request) =&amp;gt; {
    const failure = request.failure();
    failedRequests.push({
      url: request.url(),
      method: request.method(),
      error: failure ? failure.errorText : &amp;#39;unknown error&amp;#39;,
    });

    console.log(`✗ Request failed: ${request.method()} ${request.url()}`);
    if (failure) {
      console.log(`  Error: ${failure.errorText}`);
    }
  });

  try {
    // This will trigger a requestfailed event due to DNS failure
    await page.goto(&amp;#39;https://does-not-exist.invalid/&amp;#39;);
  } catch (e) {
    // Navigation error expected
  }

  console.log(`Total failed requests: ${failedRequests.length}`);

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;monitoring-for-specific-failure-types&#34;&gt;Monitoring for specific failure types&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // Track connection timeout failures specifically
  const timeoutFailures = [];

  page.on(&amp;#39;requestfailed&amp;#39;, (request) =&amp;gt; {
    const failure = request.failure();
    if (failure &amp;amp;&amp;amp; failure.errorText.toLowerCase().includes(&amp;#39;timeout&amp;#39;)) {
      timeoutFailures.push({
        url: request.url(),
        error: failure.errorText,
        timestamp: new Date().toISOString(),
      });

      console.log(`Timeout: ${failure.errorText} for ${request.url()}`);
    }
  });

  // Perform actions that might cause timeouts
  await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);

  console.log(`Timeout failures: ${timeoutFailures.length}`);

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;best-practices&#34;&gt;Best practices&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Setup before navigation&lt;/strong&gt;: Always set up the event listener before performing actions that trigger network requests:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // CORRECT: Setup event listener before navigation
  page.on(&amp;#39;requestfailed&amp;#39;, (request) =&amp;gt; {
    console.log(`Request failed: ${request.method()} ${request.url()}`);
  });
  await page.goto(&amp;#39;https://example.com&amp;#39;);

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If you set up the event listener after navigation, you may miss early failures:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // INCORRECT: May miss early failures since navigation happens first
  await page.goto(&amp;#39;https://example.com&amp;#39;);
  page.on(&amp;#39;requestfailed&amp;#39;, (request) =&amp;gt; {
    console.log(`Request failed: ${request.method()} ${request.url()}`);
  });

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Distinguish from other events&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;page.on(&#39;request&#39;)&lt;/code&gt; to track when requests are initiated&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;page.on(&#39;response&#39;)&lt;/code&gt; to track when responses start arriving&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;page.on(&#39;requestfinished&#39;)&lt;/code&gt; to track when requests successfully complete&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;page.on(&#39;requestfailed&#39;)&lt;/code&gt; to track when requests fail at the network level&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Error categorization&lt;/strong&gt;: The &lt;code&gt;failure.errorText&lt;/code&gt; can help categorize different types of network failures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Monitoring&lt;/strong&gt;: This event is valuable for identifying network infrastructure issues during browser automation tests.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;related&#34;&gt;Related&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on()&lt;/a&gt; - Register handlers for page events&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on(&amp;ldquo;request&amp;rdquo;)&lt;/a&gt; - Subscribe to request initiation events&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on(&amp;ldquo;response&amp;rdquo;)&lt;/a&gt; - Subscribe to response start events&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on(&amp;ldquo;requestfinished&amp;rdquo;)&lt;/a&gt; - Subscribe to request completion events&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforevent/&#34;&gt;page.waitForEvent()&lt;/a&gt; - Wait for page events with predicate functions&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforrequest/&#34;&gt;page.waitForRequest()&lt;/a&gt; - Wait for HTTP requests with URL pattern matching&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforresponse/&#34;&gt;page.waitForResponse()&lt;/a&gt; - Wait for HTTP responses with URL pattern matching&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/&#34;&gt;Request&lt;/a&gt; - Request object methods and properties&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="pageonrequestfailed">page.on(&amp;ldquo;requestfailed&amp;rdquo;)&lt;/h1>
&lt;p>Subscribe to the &lt;code>requestfailed&lt;/code> event, which fires when a network request fails to reach the server.&lt;/p>
&lt;p>This event is triggered when requests encounter network-level failures such as DNS errors, connection refused, timeouts, or other network problems. It does &lt;strong>not&lt;/strong> fire for HTTP 4xx/5xx responses, which are considered successful network requests.&lt;/p></description></item><item><title>page.on("requestfinished")</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/requestfinished/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/requestfinished/</guid><content><![CDATA[&lt;h1 id=&#34;pageonrequestfinished&#34;&gt;page.on(&amp;ldquo;requestfinished&amp;rdquo;)&lt;/h1&gt;
&lt;p&gt;Subscribe to the &lt;code&gt;requestfinished&lt;/code&gt; event, which fires when a network request successfully completes (receives a response).&lt;/p&gt;
&lt;p&gt;This event is triggered after the response is fully received, making it useful for tracking completed network activity, measuring request durations, or collecting statistics about successful requests.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Parameter&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;event&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The event name: &lt;code&gt;&amp;quot;requestfinished&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;handler&lt;/td&gt;
              &lt;td&gt;function&lt;/td&gt;
              &lt;td&gt;A callback function that receives a Request object&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;handler-parameters&#34;&gt;Handler Parameters&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Parameter&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;request&lt;/td&gt;
              &lt;td&gt;Request&lt;/td&gt;
              &lt;td&gt;The completed Request object&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;request-object-properties&#34;&gt;Request Object Properties&lt;/h3&gt;
&lt;p&gt;The handler receives a 
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/&#34;&gt;Request&lt;/a&gt; object with the following useful properties:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Property&lt;/th&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;request.url()&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The URL of the request&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;request.method()&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The HTTP method (GET, POST, PUT, DELETE, etc.)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;request.resourceType()&lt;/td&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The type of resource (document, stylesheet, image, etc.)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;request.isNavigationRequest()&lt;/td&gt;
              &lt;td&gt;boolean&lt;/td&gt;
              &lt;td&gt;Whether this request is a navigation request&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;examples&#34;&gt;Examples&lt;/h3&gt;
&lt;h4 id=&#34;basic-usage&#34;&gt;Basic usage&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // Track all completed requests
  const finishedRequests = [];

  page.on(&amp;#39;requestfinished&amp;#39;, (request) =&amp;gt; {
    finishedRequests.push({
      url: request.url(),
      method: request.method(),
      resourceType: request.resourceType(),
    });

    console.log(`✓ Request finished: ${request.method()} ${request.url()}`);
  });

  await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);

  console.log(`Total requests completed: ${finishedRequests.length}`);

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;tracking-api-requests&#34;&gt;Tracking API requests&lt;/h4&gt;
&lt;!-- md-k6:skip --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    ui: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  // Track API requests specifically
  const apiRequests = [];

  page.on(&amp;#39;requestfinished&amp;#39;, (request) =&amp;gt; {
    if (request.url().includes(&amp;#39;/api/&amp;#39;)) {
      apiRequests.push({
        url: request.url(),
        method: request.method(),
        timestamp: new Date().toISOString(),
      });
    }
  });

  // Navigate to a page that might trigger API calls
  await page.goto(&amp;#39;https://test.k6.io/&amp;#39;);

  // Wait for a bit to allow any API requests to complete
  await page.waitForTimeout(2000);

  console.log(`API requests completed: ${apiRequests.length}`);

  await page.close();
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;best-practices&#34;&gt;Best practices&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Setup before navigation&lt;/strong&gt;: Always set up the event listener before performing actions that trigger network requests:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;// Correct
page.on(&amp;#39;requestfinished&amp;#39;, handler);
await page.goto(&amp;#39;https://example.com&amp;#39;);

// Incorrect - may miss early requests
await page.goto(&amp;#39;https://example.com&amp;#39;);
page.on(&amp;#39;requestfinished&amp;#39;, handler);&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Distinguish from other events&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;page.on(&#39;request&#39;)&lt;/code&gt; to track when requests are initiated&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;page.on(&#39;response&#39;)&lt;/code&gt; to track when responses start arriving&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;page.on(&#39;requestfinished&#39;)&lt;/code&gt; to track when requests completely finish&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Performance monitoring&lt;/strong&gt;: This event is ideal for measuring actual request completion times and tracking network performance.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;related&#34;&gt;Related&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on()&lt;/a&gt; - Register handlers for page events&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on(&amp;ldquo;request&amp;rdquo;)&lt;/a&gt; - Subscribe to request initiation events&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on(&amp;ldquo;response&amp;rdquo;)&lt;/a&gt; - Subscribe to response start events&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/on/&#34;&gt;page.on(&amp;ldquo;requestfailed&amp;rdquo;)&lt;/a&gt; - Subscribe to request failure events&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforevent/&#34;&gt;page.waitForEvent()&lt;/a&gt; - Wait for page events with predicate functions&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforrequest/&#34;&gt;page.waitForRequest()&lt;/a&gt; - Wait for HTTP requests with URL pattern matching&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/page/waitforresponse/&#34;&gt;page.waitForResponse()&lt;/a&gt; - Wait for HTTP responses with URL pattern matching&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/javascript-api/k6-browser/request/&#34;&gt;Request&lt;/a&gt; - Request object methods and properties&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="pageonrequestfinished">page.on(&amp;ldquo;requestfinished&amp;rdquo;)&lt;/h1>
&lt;p>Subscribe to the &lt;code>requestfinished&lt;/code> event, which fires when a network request successfully completes (receives a response).&lt;/p>
&lt;p>This event is triggered after the response is fully received, making it useful for tracking completed network activity, measuring request durations, or collecting statistics about successful requests.&lt;/p></description></item><item><title>version()</title><link>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/version/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/javascript-api/k6-browser/version/</guid><content><![CDATA[&lt;h1 id=&#34;version&#34;&gt;version()&lt;/h1&gt;
&lt;p&gt;Returns the browser application&amp;rsquo;s version.&lt;/p&gt;
&lt;h3 id=&#34;returns&#34;&gt;Returns&lt;/h3&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;string&lt;/td&gt;
              &lt;td&gt;The browser application&amp;rsquo;s version.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { browser } from &amp;#39;k6/browser&amp;#39;;

export const options = {
  scenarios: {
    browser: {
      executor: &amp;#39;shared-iterations&amp;#39;,
      options: {
        browser: {
          type: &amp;#39;chromium&amp;#39;,
        },
      },
    },
  },
};

export default function () {
  const version = browser.version();
  console.log(version); // 105.0.5195.52
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="version">version()&lt;/h1>
&lt;p>Returns the browser application&amp;rsquo;s version.&lt;/p>
&lt;h3 id="returns">Returns&lt;/h3>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>string&lt;/td>
&lt;td>The browser application&amp;rsquo;s version.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h3 id="example">Example&lt;/h3>
&lt;div class="code-snippet ">&lt;div class="lang-toolbar">
&lt;span class="lang-toolbar__item lang-toolbar__item-active">JavaScript&lt;/span>
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;div class="lang-toolbar__border">&lt;/div>
&lt;/div>&lt;div class="code-snippet ">
&lt;pre data-expanded="false">&lt;code class="language-javascript">import { browser } from &amp;#39;k6/browser&amp;#39;;
export const options = {
scenarios: {
browser: {
executor: &amp;#39;shared-iterations&amp;#39;,
options: {
browser: {
type: &amp;#39;chromium&amp;#39;,
},
},
},
},
};
export default function () {
const version = browser.version();
console.log(version); // 105.0.5195.52
}&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div></description></item></channel></rss>