[{"data":1,"prerenderedAt":255},["ShallowReactive",2],{"SiteFooter_cLEacilcm59lTjFJjLY6mXNWLL0ETtzOIiZwIHgDpy0":3,"why-vs-playwright":17,"nav-compare":241,"editor-g2o9ty":251,"editor-hyzmg0":253},["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,"comparedAgainst":230,"description":231,"extension":232,"meta":233,"navigation":234,"order":218,"path":235,"seo":236,"slug":237,"stem":238,"tagline":239,"tool":37,"__hash__":240},"why\u002Fwhy\u002Fplaywright.md","Browser vs Playwright Test",{"type":21,"value":22,"toc":216},"minimark",[23,32,44,49,52,68,71,81,85,88,93,96,102,121,125,128,134,138,141,163,166,170,173,178,185,189,192,203,206,210,213],[24,25,26,27,31],"p",{},"This is not really a competition, because ",[28,29,30],"strong",{},"Browser library is built on\nPlaywright",". Every keyword here ends up as a Playwright call. When Playwright\ngets faster, we get faster. When it gains an API, we can expose it.",[24,33,34,35,38,39,43],{},"So the honest comparison is not Browser against Playwright. It is Robot\nFramework against ",[28,36,37],{},"Playwright Test",", the TypeScript test runner — two\ndifferent answers to ",[40,41,42],"em",{},"how do you write and organise tests",", over the same\nautomation engine.",[45,46,48],"h2",{"id":47},"what-we-do-not-have","What we do not have",[24,50,51],{},"First, because a comparison page that lists only its own strengths is marketing.",[24,53,54,55,58,59,62,63,67],{},"We have the Playwright ",[28,56,57],{},"API",". We do not have Playwright ",[28,60,61],{},"Test",". Concretely,\n",[64,65,66],"code",{},"expect()"," and its web-first assertions do not map to Browser keywords 1:1.\nPlaywright's assertion library is large, specific and very well made; Browser's\ngetters cover the same ground for the things people actually assert, but they\nare not a drop-in translation.",[24,69,70],{},"Nor do we have the Playwright Test runner's fixtures, projects, sharded\nparallelism or HTML report. Robot Framework has its own answers to all of those\n— but they are Robot Framework's answers, so porting a Playwright Test suite is\na rewrite rather than a translation.",[72,73,74],"doc-note",{},[24,75,76,77,80],{},"If your test looks like ",[64,78,79],{},"await expect(locator).toHaveText('x')"," and that is\nexactly how you want it to look, you are already using the right tool. This page\nis for people choosing, not for people migrating away from something that works.",[45,82,84],{"id":83},"what-we-offer-instead","What we offer instead",[24,86,87],{},"Four things, all of which come from Robot Framework rather than from us.",[89,90,92],"h3",{"id":91},"_1-readability","1. Readability",[24,94,95],{},"The same test, written both ways:",[97,98],"comparison",{":notes":99,"left":100,"right":101},"[\"Same engine underneath, same auto-waiting, same role selectors.\",\"The Robot Framework file has no async\u002Fawait, no braces, no arrow functions and no fixture argument.\"]","comparison\u002Fplaywright\u002Ftest.robot","comparison\u002Fplaywright\u002Ftest.spec.ts",[24,103,104,105,108,109,112,113,116,117,120],{},"The right-hand file is good TypeScript. The point is that it ",[40,106,107],{},"is"," TypeScript: to\nread it you need to know what ",[64,110,111],{},"async"," means, why every line needs ",[64,114,115],{},"await",", what\ndestructuring ",[64,118,119],{},"{ page }"," does, and what a fixture is. The left-hand file needs\nnone of that.",[89,122,124],{"id":123},"_2-easier-to-learn","2. Easier to learn",[24,126,127],{},"A tester who has never automated anything can write a useful Robot Framework\ntest on their first day. The syntax is a keyword, then its arguments, separated\nby spaces.",[24,129,130,131,133],{},"Reaching the same point in Playwright Test means learning JavaScript's\nasynchronous model first — not the syntax, the model. A missing ",[64,132,115],{}," is a\ntest that passes while the application is broken, and it looks nothing like a\nmistake.",[89,135,137],{"id":136},"_3-business-logic-expressed-as-business-language","3. Business logic, expressed as business language",[24,139,140],{},"Keyword-driven testing is the real feature here, and it is bigger than\nreadability.",[24,142,143,144,147,148,147,151,154,155,158,159,162],{},"You build vocabulary. ",[64,145,146],{},"Log in as an approved supplier",", ",[64,149,150],{},"Submit a claim over the excess",[64,152,153],{},"The claim should be routed to manual review"," — each a keyword,\ncomposed of other keywords, all the way down to ",[64,156,157],{},"Click",". The test reads as the\nbusiness process, and ",[28,160,161],{},"the log reads the same way",": every compound keyword is\na collapsible step in the report, not a flattened list of clicks.",[24,164,165],{},"That is what makes a Robot Framework report something you can hand to a domain\nexpert. Not the styling — the structure.",[89,167,169],{"id":168},"_4-cross-technology-testing","4. Cross-technology testing",[24,171,172],{},"Robot Framework is a general-purpose automation framework that happens to be\nvery good at web. One suite, one report, one syntax across:",[174,175],"doc-table",{":head":176,":rows":177},"[\"Also in the same test\",\"With\"]","[[\"REST and GraphQL APIs\",\"RequestsLibrary, and others\"],[\"Databases\",\"DatabaseLibrary\"],[\"Mobile apps\",\"AppiumLibrary\"],[\"Desktop applications\",\"FlaUI, SikuliX, RoboSAPiens for SAP\"],[\"Files, SFTP, SSH, archives\",\"OperatingSystem, SSHLibrary, ArchiveLibrary\"],[\"Anything else\",\"A Python class you write in an afternoon\"]]",[24,179,180,181,184],{},"Playwright Test tests web applications. You ",[40,182,183],{},"can"," call an API from a Playwright\ntest — the request fixture is good — but when one scenario spans a web UI, a\nmessage queue and a mainframe, you are assembling a framework. Robot Framework\nalready is one.",[45,186,188],{"id":187},"our-clear-recommendation","Our clear recommendation",[24,190,191],{},"We mean this, and we are not burying it in small type at the bottom:",[72,193,195,200],{"kind":194},"aside",[24,196,197],{},[28,198,199],{},"If you are looking for a great TypeScript web automation framework, and you do\nnot need to test other technologies, and you have people who read and write\nTypeScript, and you have no requirement for business-readable test reports —\nthen our clear recommendation is Playwright Test.",[24,201,202],{},"It is excellent. Use it.",[24,204,205],{},"Those four conditions are the whole decision. Break any one of them — a tester\nwho is not a developer, a system that is not only a web application, an auditor\nwho has to read the report — and Robot Framework starts earning its keep. Meet\nall four, and Playwright Test is the better fit, and we would rather you were\nproductive than loyal.",[45,207,209],{"id":208},"thank-you","Thank you",[24,211,212],{},"Browser library exists because Playwright exists. The auto-waiting, the role\nselectors, the trace viewer, three engines under one API — we did not build any\nof that. We made it available to Robot Framework.",[24,214,215],{},"Best regards from our side to an awesome open-source project.",{"title":217,"searchDepth":218,"depth":218,"links":219},"",2,[220,221,228,229],{"id":47,"depth":218,"text":48},{"id":83,"depth":218,"text":84,"children":222},[223,225,226,227],{"id":91,"depth":224,"text":92},3,{"id":123,"depth":224,"text":124},{"id":136,"depth":224,"text":137},{"id":168,"depth":224,"text":169},{"id":187,"depth":218,"text":188},{"id":208,"depth":218,"text":209},"Playwright %%playwright%%, Browser %%browser%%","This is not really a competition, because Browser library is built on\nPlaywright. Every keyword here ends up as a Playwright call. When Playwright\ngets faster, we get faster. When it gains an API, we can expose it.","md",{},true,"\u002Fwhy\u002Fplaywright",{"title":19,"description":231},"vs-playwright","why\u002Fplaywright","Microsoft's browser automation framework, and its TypeScript test runner.","A_prUut2MYpwYAPjPP81FQatPRicfs0Ca3D4AGlVvag",[242,245,248],{"to":243,"label":244},"\u002Fwhy\u002Fvs-cypress","vs Cypress",{"to":246,"label":247},"\u002Fwhy\u002Fvs-playwright","vs Playwright Test",{"to":249,"label":250},"\u002Fwhy\u002Fvs-seleniumlibrary","vs SeleniumLibrary",[252],"\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>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF6B5E;font-weight:bold\">*** Test Cases ***\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Has Title\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    https:\u002F\u002Fplaywright.dev\u002F\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Title\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    contains\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    Playwright\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Get Started Link\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    https:\u002F\u002Fplaywright.dev\u002F\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">element\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\">=\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">    Get Element By Role\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    LINK\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    name=Get started\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Click\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">element\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">heading\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\">=\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">    Get Element By Role\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    HEADING\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    name=Installation\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Element States\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">heading\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    contains\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    visible\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Get Started Link [Alternative]\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    https:\u002F\u002Fplaywright.dev\u002F\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Click\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    a >> \"Get started\"\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Element States\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    h1 >> \"Installation\"\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    contains\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    visible\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">Playwright Test\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    https:\u002F\u002Fplaywright.dev\u002F\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Title\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    matches\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">   Playwright\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Attribute\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    \"Get started\"\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    href\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    ==\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    \u002Fdocs\u002Fintro\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Click\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    \"Get started\"\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Url\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    matches\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    .*intro\u003C\u002Fspan>\u003C\u002Fspan>",[254],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">import\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> test\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> expect\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> }\u003C\u002Fspan>\u003Cspan style=\"color:#C9A6E9\"> from\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> '\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">@playwright\u002Ftest\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">;\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">test\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">has title\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#C9A6E9\"> async\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> ({\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\"> page \u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">})\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> {\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">goto\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">https:\u002F\u002Fplaywright.dev\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> expect\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">).\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">toHaveTitle\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">Playwright\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">});\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">test\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">get started link\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#C9A6E9\"> async\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> ({\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\"> page \u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">})\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> {\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">goto\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">https:\u002F\u002Fplaywright.dev\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">getByRole\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">link\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\"> name\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">:\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> '\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">Get started\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> }).\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">click\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">();\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> expect\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">getByRole\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">heading\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\"> name\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">:\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> '\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">Installation\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> })).\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">toBeVisible\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">();\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">});\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">test\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">Playwright Test\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#C9A6E9\"> async\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> ({\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\"> page \u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">})\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> {\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">goto\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">https:\u002F\u002Fplaywright.dev\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> expect\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">).\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">toHaveTitle\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">Playwright\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">  const\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> getStarted\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">getByText\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">Get started\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> expect\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">getStarted\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">).\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">toHaveAttribute\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">href\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> '\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Fdocs\u002Fintro\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\"> getStarted\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">click\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">();\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">  await\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> expect\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">).\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">toHaveURL\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">.\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\">*\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">intro\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">});\u003C\u002Fspan>\u003C\u002Fspan>",1786734137190]