[{"data":1,"prerenderedAt":562},["ShallowReactive",2],{"SiteFooter_cLEacilcm59lTjFJjLY6mXNWLL0ETtzOIiZwIHgDpy0":3,"doc-\u002Fdocs\u002Fconcepts\u002Flogging":17,"docs-nav":464,"nav-compare":538,"editor-1dy8g6v":548,"editor-1f0biw6":550,"editor-jixyr5":552,"editor-h01ycc":554,"editor-1b87tsw":556,"editor-1udhuxc":558,"editor-vvr0lb":560},["Island",4],{"key":5,"result":6},"SiteFooter_cLEacilcm59lTjFJjLY6mXNWLL0ETtzOIiZwIHgDpy0",{"head":7},{"style":8},[9,11,13,15],{"innerHTML":10},".site-footer[data-v-8bb1d4ae]{border-top:1px solid var(--line);background:var(--chrome);padding:var(--sp-8) var(--gutter) var(--sp-10);gap:var(--sp-6);flex-direction:column;display:flex}.links[data-v-8bb1d4ae]{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));max-width:62rem;display:grid}.links a[data-v-8bb1d4ae]{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);border-bottom:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);border:1px solid var(--line);display:flex}.links a[data-v-8bb1d4ae]:focus-visible,.links a[data-v-8bb1d4ae]:hover{border-color:var(--line-strong)}.links[data-v-8bb1d4ae] .mark,.links[data-v-8bb1d4ae] .rf-mark{width:1.35rem;height:1.35rem;color:var(--dim);flex:none;margin-top:.1rem}.links a[data-v-8bb1d4ae]:hover .mark,.links a[data-v-8bb1d4ae]:hover .rf-mark{color:var(--red)}.links span[data-v-8bb1d4ae]{flex-direction:column;gap:2px;min-width:0;display:flex}.links b[data-v-8bb1d4ae]{font-family:var(--font-display);font-size:.85rem;font-weight:400}.links small[data-v-8bb1d4ae]{color:var(--faint);font-size:.78rem}.colophon[data-v-8bb1d4ae]{color:var(--faint);margin:0;font-size:.75rem}@supports (corner-shape:bevel){.links a[data-v-8bb1d4ae]{corner-shape:bevel}}",{"innerHTML":12},".mark[data-v-cc0d96a5]{vertical-align:-.125em;flex:none;width:1em;height:1em}",{"innerHTML":14},".mark[data-v-26f5673d]{vertical-align:-.125em;flex:none;width:1em;height:1em}",{"innerHTML":16},".rf-mark[data-v-26317b3e]{fill:currentColor;stroke:none;flex:none}",{"id":18,"title":19,"body":20,"description":455,"extension":456,"meta":457,"navigation":458,"order":376,"path":459,"section":460,"seo":461,"stem":462,"__hash__":463},"docs\u002Fdocs\u002Fconcepts\u002Flogging.md","Logging and debugging",{"type":21,"value":22,"toc":449},"minimark",[23,32,37,42,45,48,84,88,98,125,142,181,188,192,195,206,217,251,277,280,311,322,326,334,341,380,383,401,436,445],[24,25,26,27,31],"p",{},"Browser writes to more than one place, because it ",[28,29,30],"em",{},"is"," more than one process.\nKnowing which file answers which question saves a lot of guessing.",[33,34],"doc-table",{":head":35,":rows":36},"[\"Where\",\"What it holds\",\"When to open it\"]","[[\"`log.html`\",\"The Python side: keywords, arguments, status\",\"First. Always.\"],[\"`playwright-log.txt`\",\"The Node side of the library\",\"A keyword failed and log.html does not say why\"],[\"`browser\u002Ftraces\u002Ftrace_*.zip`\",\"Every Playwright call, with DOM snapshots\",\"Something failed and you need to see the page as it was\"],[\"Coverage report\",\"Which code the run actually exercised\",\"Asking what the suite does not touch\"]]",[38,39,41],"h2",{"id":40},"loghtml","log.html",[24,43,44],{},"Most Browser keywords log a message produced by the Node side — often\nincluding the selector and the value used. More of them appear at DEBUG level.",[24,46,47],{},"When a keyword fails, the info level already shows the error from the Playwright\ncall. Running at debug level shows a good deal more:",[49,50,55],"pre",{"className":51,"code":52,"language":53,"meta":54,"style":54},"language-bash shiki shiki-themes github-light github-dark","robot --loglevel debug --outputdir output tests\u002F\n","bash","",[56,57,58],"code",{"__ignoreMap":54},[59,60,63,67,71,75,78,81],"span",{"class":61,"line":62},"line",1,[59,64,66],{"class":65},"sScJk","robot",[59,68,70],{"class":69},"sj4cs"," --loglevel",[59,72,74],{"class":73},"sZZnC"," debug",[59,76,77],{"class":69}," --outputdir",[59,79,80],{"class":73}," output",[59,82,83],{"class":73}," tests\u002F\n",[38,85,87],{"id":86},"playwright-logtxt","playwright-log.txt",[24,89,90,93,94,97],{},[56,91,92],{},"${OUTPUT_DIR}\u002Fplaywright-log.txt"," holds the Node side. It is written by\ndefault, created when the Node process starts, and not written at all if you\nimport with ",[56,95,96],{},"enable_playwright_debug=disabled",".\nThe Robot log level does not affect it.",[24,99,100,101,104,105,108,109,112,113,116,117,120,121,124],{},"The argument takes three values: ",[56,102,103],{},"library"," (the default — only Browser's own\nNode messages), ",[56,106,107],{},"playwright"," (those plus Playwright's ",[56,110,111],{},"DEBUG=pw:api"," output), and\n",[56,114,115],{},"disabled"," (no file at all). ",[56,118,119],{},"False"," and ",[56,122,123],{},"True"," are older aliases for the first\ntwo. For much more detail:",[49,126,129],{"className":127,"code":128,"language":66,"meta":54,"style":54},"language-robot shiki shiki-themes github-light github-dark","*** Settings ***\nLibrary    Browser    enable_playwright_debug=playwright\n",[56,130,131,136],{"__ignoreMap":54},[59,132,133],{"class":61,"line":62},[59,134,135],{},"*** Settings ***\n",[59,137,139],{"class":61,"line":138},2,[59,140,141],{},"Library    Browser    enable_playwright_debug=playwright\n",[143,144,146,152],"doc-note",{"kind":145},"warning",[24,147,148,149,151],{},"The file mixes two formats: the library's own Node messages are JSON lines, and\nPlaywright's ",[56,150,111],{}," output is plain text.",[24,153,154,155,166,167,120,170,173,174,176,177,180],{},"That Playwright output includes ",[156,157,158,159,120,162,165],"strong",{},"the values passed to ",[56,160,161],{},"fill",[56,163,164],{},"type",", in\nclear text",". ",[56,168,169],{},"Fill Secret",[56,171,172],{},"Type Secret"," never write the value to\n",[56,175,41],{}," — the response is not logged and error messages are scrubbed — but\nthey cannot stop Playwright's own debug log, and the value also lands in\n",[56,178,179],{},"trace.zip",". Treat both as secret-bearing. Do not\nenable this on a run that touches real credentials.",[24,182,183,184,187],{},"Each run replaces the file. If the old one cannot be deleted — still open on\nWindows, for instance — the new log is written beside it as\n",[56,185,186],{},"playwright-log-\u003Cnanoseconds>.txt",".",[38,189,191],{"id":190},"traces","Traces",[24,193,194],{},"A trace records every Playwright call in a context, with a DOM snapshot at each\nstep. It is the single most useful artefact when a test fails somewhere you\ncannot reproduce.",[49,196,200],{"className":197,"code":198,"language":199,"meta":54,"style":54},"language-robot-repl shiki shiki-themes github-light github-dark","New Context    tracing=True\n","robot-repl",[56,201,202],{"__ignoreMap":54},[59,203,204],{"class":61,"line":62},[59,205,198],{},[24,207,208,209,212,213,216],{},"The zip is written when the ",[156,210,211],{},"context closes"," — automatically at the\nauto-closing level, or when you call ",[56,214,215],{},"Close Context",". Do not go looking for it\nwhile the browser is still open.",[24,218,219,220,223,224,227,228,231,232,235,236,239,240,243,244,246,247,250],{},"To record without passing ",[56,221,222],{},"tracing="," in every test, set the environment variable\n",[56,225,226],{},"ROBOT_FRAMEWORK_BROWSER_TRACING=True",". It applies to every ",[56,229,230],{},"New Context"," and\n",[56,233,234],{},"New Persistent Context"," — a context that ",[56,237,238],{},"New Page"," creates implicitly is ",[28,241,242],{},"not","\ntraced, so a suite that never calls ",[56,245,230],{}," records nothing. And\n",[56,248,249],{},"auto_delete_passed_tracing=True"," at import keeps only the traces of failed\ntests, which is what makes this affordable in CI:",[49,252,254],{"className":51,"code":253,"language":53,"meta":54,"style":54},"ROBOT_FRAMEWORK_BROWSER_TRACING=True robot --outputdir output tests\u002F\n",[56,255,256],{"__ignoreMap":54},[59,257,258,262,266,268,271,273,275],{"class":61,"line":62},[59,259,261],{"class":260},"sVt8B","ROBOT_FRAMEWORK_BROWSER_TRACING",[59,263,265],{"class":264},"szBVR","=",[59,267,123],{"class":73},[59,269,270],{"class":65}," robot",[59,272,77],{"class":69},[59,274,80],{"class":73},[59,276,83],{"class":73},[24,278,279],{},"Open the result either way:",[49,281,283],{"className":51,"code":282,"language":53,"meta":54,"style":54},"rfbrowser show-trace output\u002Fbrowser\u002Ftraces\u002Ftrace_context=\u003Cid>.zip\n",[56,284,285],{"__ignoreMap":54},[59,286,287,290,293,296,299,302,305,308],{"class":61,"line":62},[59,288,289],{"class":65},"rfbrowser",[59,291,292],{"class":73}," show-trace",[59,294,295],{"class":73}," output\u002Fbrowser\u002Ftraces\u002Ftrace_context=",[59,297,298],{"class":264},"\u003C",[59,300,301],{"class":73},"i",[59,303,304],{"class":260},"d",[59,306,307],{"class":264},">",[59,309,310],{"class":73},".zip\n",[24,312,313,314,321],{},"or drop it on ",[315,316,320],"a",{"href":317,"rel":318},"https:\u002F\u002Ftrace.playwright.dev\u002F",[319],"nofollow","trace.playwright.dev",", which runs\nentirely in your browser.",[38,323,325],{"id":324},"coverage","Coverage",[24,327,328,329,187],{},"Browser can collect code coverage from the pages it drives — data from\nPlaywright, report from\n",[315,330,333],{"href":331,"rel":332},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmonocart-coverage-reports",[319],"monocart-coverage-reports",[24,335,336,337,340],{},"Coverage is enabled ",[156,338,339],{},"per page",":",[49,342,344],{"className":127,"code":343,"language":66,"meta":54,"style":54},"*** Test Cases ***\nCheckout Coverage\n    New Page    https:\u002F\u002Fexample.com\u002Fcheckout\n    Start Coverage    raw=True\n    Take Screenshot\n    Stop Coverage\n",[56,345,346,351,356,362,368,374],{"__ignoreMap":54},[59,347,348],{"class":61,"line":62},[59,349,350],{},"*** Test Cases ***\n",[59,352,353],{"class":61,"line":138},[59,354,355],{},"Checkout Coverage\n",[59,357,359],{"class":61,"line":358},3,[59,360,361],{},"    New Page    https:\u002F\u002Fexample.com\u002Fcheckout\n",[59,363,365],{"class":61,"line":364},4,[59,366,367],{},"    Start Coverage    raw=True\n",[59,369,371],{"class":61,"line":370},5,[59,372,373],{},"    Take Screenshot\n",[59,375,377],{"class":61,"line":376},6,[59,378,379],{},"    Stop Coverage\n",[24,381,382],{},"Combine the per-page data into one report:",[49,384,386],{"className":51,"code":385,"language":53,"meta":54,"style":54},"rfbrowser coverage output\u002Fbrowser\u002Fcoverage\u002F output\u002Freport\n",[56,387,388],{"__ignoreMap":54},[59,389,390,392,395,398],{"class":61,"line":62},[59,391,289],{"class":65},[59,393,394],{"class":73}," coverage",[59,396,397],{"class":73}," output\u002Fbrowser\u002Fcoverage\u002F",[59,399,400],{"class":73}," output\u002Freport\n",[24,402,403,404,407,408,411,412,415,416,419,420,423,424,427,428,431,432,435],{},"Combining needs the raw data, which is why ",[56,405,406],{},"Start Coverage"," above passes\n",[56,409,410],{},"raw=True",". Note that ",[56,413,414],{},"raw"," is ignored when you also pass ",[56,417,418],{},"config_file"," — then\nyou have to add ",[56,421,422],{},"['raw']"," to ",[56,425,426],{},"reports"," in the config yourself — without it there is nothing to merge and the command fails with\n",[56,429,430],{},"No raw reports found",". The same thing is available as the\n",[56,433,434],{},"Merge Coverage Reports"," keyword.",[24,437,438,439,444],{},"Monocart takes a ",[315,440,443],{"href":441,"rel":442},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmonocart-coverage-reports#config-file",[319],"config file","\nif you need filtering, which you probably will — third-party bundles otherwise\ndominate the numbers.",[446,447,448],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":54,"searchDepth":138,"depth":138,"links":450},[451,452,453,454],{"id":40,"depth":138,"text":41},{"id":86,"depth":138,"text":87},{"id":190,"depth":138,"text":191},{"id":324,"depth":138,"text":325},"Four places Browser tells you what happened — log.html, the Playwright log, traces and coverage.","md",{},true,"\u002Fdocs\u002Fconcepts\u002Flogging","concepts",{"title":19,"description":455},"docs\u002Fconcepts\u002Flogging","f_T9ISsS76yhCicQ7KdYlS0tQml6VkGIJHjeN8mm8do",[465,469,473,477,478,482,486,491,495,499,503,508,512,516,521,525,529,533],{"path":466,"title":467,"description":468,"section":460,"order":370},"\u002Fdocs\u002Fconcepts\u002Farchitecture","How Browser works","Python, a Node process and Playwright — what runs where, and which installation to choose.",{"path":470,"title":471,"description":472,"section":460,"order":358},"\u002Fdocs\u002Fconcepts\u002Fassertions","Assertions","Almost every getter can assert, every assertion retries, and each return type allows different operators. The complete AssertionEngine reference.",{"path":474,"title":475,"description":476,"section":460,"order":62},"\u002Fdocs\u002Fconcepts\u002Fbrowser-context-page","Browser, context and page","The three layers Playwright is built on — and why a new context is the cheapest clean slate you will ever get.",{"path":459,"title":19,"description":455,"section":460,"order":376},{"path":479,"title":480,"description":481,"section":460,"order":138},"\u002Fdocs\u002Fconcepts\u002Fselectors","Finding elements","Which selector strategy to reach for, why the order matters, and how to chain across iframes and shadow DOM.",{"path":483,"title":484,"description":485,"section":460,"order":364},"\u002Fdocs\u002Fconcepts\u002Fwaiting","Waiting and promises","Most waiting is already done for you. This is the rest of it — Wait For Condition, and how to run keywords in parallel with Promise To.",{"path":487,"title":488,"description":489,"section":490,"order":138},"\u002Fdocs\u002Fextending\u002Fjavascript-basics","Just enough JavaScript","The JavaScript you need to write extensions and Evaluate JavaScript, for people who write Python.","extending",{"path":492,"title":493,"description":494,"section":490,"order":358},"\u002Fdocs\u002Fextending\u002Fjavascript-extensions","JavaScript extensions","Add keywords that run on the Node side with full Playwright access — and attach a debugger to them.",{"path":496,"title":497,"description":498,"section":490,"order":62},"\u002Fdocs\u002Fextending\u002Fpython-plugins","Python plugins","Add or replace keywords from Python, with access to the library's own API and to the Node side.",{"path":500,"title":501,"description":502,"section":490,"order":364},"\u002Fdocs\u002Fextending\u002Ftranslations","Translating keywords","Using a translation package to get keyword names and documentation in your language, and writing one for a language nobody has covered yet.",{"path":504,"title":505,"description":506,"section":507,"order":138},"\u002Fdocs\u002Fmobile\u002Fdevices","Emulating a device","Device descriptors, what the six or seven properties they set actually change, and the one that emulation cannot give you.","mobile",{"path":509,"title":510,"description":511,"section":507,"order":62},"\u002Fdocs\u002Fmobile\u002Fresponsive","Testing responsive pages","Why a browser at a phone-sized viewport tests responsiveness properly, what emulation cannot tell you, and where real devices actually belong.",{"path":513,"title":514,"description":515,"section":507,"order":358},"\u002Fdocs\u002Fmobile\u002Ftouch","Touch, permissions and location","Tap and why it needs hasTouch, granting camera or notifications without a dialog, faking where the user is, and the gestures Browser has no keyword for.",{"path":517,"title":518,"description":519,"section":520,"order":358},"\u002Fdocs\u002Foperations\u002Fdocker","Running in Docker","The published Browser image, the four docker run flags that matter, and why running as root breaks Chromium.","operations",{"path":522,"title":523,"description":524,"section":520,"order":364},"\u002Fdocs\u002Foperations\u002Fdocker-images","Building your own image","Extending the published image with your dependencies, the version lock between Browser and Playwright, and using it as a CI job container.",{"path":526,"title":527,"description":528,"section":520,"order":138},"\u002Fdocs\u002Foperations\u002Fenvironment-variables","Environment variables","The variables that change how Browser behaves, which of them are safe in production, and the import parameters that should usually be preferred.",{"path":530,"title":531,"description":532,"section":520,"order":62},"\u002Fdocs\u002Foperations\u002Fnode-process","The Node process","Browser starts a Node process to talk to Playwright. What that costs, how to share one across parallel runs, and how to pass it Node flags.",{"path":534,"title":535,"description":536,"section":537,"order":62},"\u002Fdocs\u002Fstart\u002Fgetting-started","Getting started","Install Browser, write a first test, and run it.","start",[539,542,545],{"to":540,"label":541},"\u002Fwhy\u002Fvs-cypress","vs Cypress",{"to":543,"label":544},"\u002Fwhy\u002Fvs-playwright","vs Playwright Test",{"to":546,"label":547},"\u002Fwhy\u002Fvs-seleniumlibrary","vs SeleniumLibrary",[549],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">robot\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> --loglevel\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> debug\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> --outputdir\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> output\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> tests\u002F\u003C\u002Fspan>\u003C\u002Fspan>",[551],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF6B5E;font-weight:bold\">*** Settings ***\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">Library\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    Browser\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    enable_playwright_debug=playwright\u003C\u002Fspan>\u003C\u002Fspan>",[553],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">New Context\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    tracing=True\u003C\u002Fspan>\u003C\u002Fspan>",[555],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFB86B\">ROBOT_FRAMEWORK_BROWSER_TRACING\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">True\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> robot\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> --outputdir\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> output\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> tests\u002F\u003C\u002Fspan>\u003C\u002Fspan>",[557],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">rfbrowser\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> show-trace\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> output\u002Fbrowser\u002Ftraces\u002Ftrace_context=\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">i\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\">d\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\">>\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">.zip\u003C\u002Fspan>\u003C\u002Fspan>",[559],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF6B5E;font-weight:bold\">*** Test Cases ***\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Checkout Coverage\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    https:\u002F\u002Fexample.com\u002Fcheckout\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Start Coverage\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    raw=True\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Take Screenshot\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Stop Coverage\u003C\u002Fspan>\u003C\u002Fspan>",[561],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">rfbrowser\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> coverage\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> output\u002Fbrowser\u002Fcoverage\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> output\u002Freport\u003C\u002Fspan>\u003C\u002Fspan>",1786734138498]