[{"data":1,"prerenderedAt":432},["ShallowReactive",2],{"SiteFooter_cLEacilcm59lTjFJjLY6mXNWLL0ETtzOIiZwIHgDpy0":3,"why-vs-cypress":17,"nav-compare":413,"editor-1xasj91":422,"editor-1pn9ssp":424,"editor-1v8y5io":426,"editor-2i1l34":428,"editor-142bmq9":430},["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":403,"description":26,"extension":404,"meta":405,"navigation":105,"order":72,"path":406,"seo":407,"slug":408,"stem":409,"tagline":410,"tool":411,"__hash__":412},"why\u002Fwhy\u002Fcypress.md","Browser vs Cypress",{"type":21,"value":22,"toc":396},"minimark",[23,27,35,40,43,51,59,160,163,168,174,178,181,188,191,194,217,250,253,260,264,267,281,295,301,311,314,318,321,327,346,349,353,356,373,376,392],[24,25,26],"p",{},"Cypress made end-to-end testing pleasant when it was not, and a lot of people\nlearned that tests can be fast and debuggable because Cypress showed them. Credit\nwhere it is due.",[24,28,29,30,34],{},"The argument below is not that Cypress is bad. It is that Cypress bought its\ndeveloper experience by moving the test ",[31,32,33],"em",{},"into"," the browser, and most of what is\nawkward about it follows from that one decision.",[36,37,39],"h2",{"id":38},"_1-we-are-built-on-playwright-so-there-is-nothing-to-work-around","1. We are built on Playwright, so there is nothing to work around",[24,41,42],{},"Cypress runs your test code inside the browser, in the same event loop as the\napplication under test. That is where the live-reloading runner comes from. It\nis also where the constraints come from, and you tend to meet those later.",[24,44,45,46,50],{},"Browser drives the browser from outside, over Playwright. There is no\nsame-origin boundary to work around, no ",[47,48,49],"code",{},"cy.origin()"," wrapper for visiting a\nsecond domain, no special case for a login flow that redirects through an\nidentity provider. Multiple tabs are multiple pages. Multiple browsers in one\ntest are multiple browsers.",[24,52,53,54,58],{},"The case that decides it for a lot of applications is ",[55,56,57],"strong",{},"two users at once",".\nChat, a shared document, a seller and a bidder, an approval queue, a support\nagent and the customer they are helping — one test, two logged-in sessions,\neach seeing what the other does:",[60,61,66],"pre",{"className":62,"code":63,"language":64,"meta":65,"style":65},"language-robot shiki shiki-themes github-light github-dark","*** Test Cases ***\nThe Buyer Sees The Seller's Price Change\n    New Browser    chromium\n    ${seller} =    New Context\n    ${buyer} =     New Context\n\n    Switch Context    ${seller}\n    New Page    ${SHOP}\u002Fadmin\n    Log In As    seller@example.com\n    Fill Text    id=price    99.00\n    Click    text=Publish\n\n    Switch Context    ${buyer}\n    New Page    ${SHOP}\u002Fitem\u002F42\n    Get Text    css=.price    ==    99.00\n","robot","",[47,67,68,76,82,88,94,100,107,113,119,125,131,137,142,148,154],{"__ignoreMap":65},[69,70,73],"span",{"class":71,"line":72},"line",1,[69,74,75],{},"*** Test Cases ***\n",[69,77,79],{"class":71,"line":78},2,[69,80,81],{},"The Buyer Sees The Seller's Price Change\n",[69,83,85],{"class":71,"line":84},3,[69,86,87],{},"    New Browser    chromium\n",[69,89,91],{"class":71,"line":90},4,[69,92,93],{},"    ${seller} =    New Context\n",[69,95,97],{"class":71,"line":96},5,[69,98,99],{},"    ${buyer} =     New Context\n",[69,101,103],{"class":71,"line":102},6,[69,104,106],{"emptyLinePlaceholder":105},true,"\n",[69,108,110],{"class":71,"line":109},7,[69,111,112],{},"    Switch Context    ${seller}\n",[69,114,116],{"class":71,"line":115},8,[69,117,118],{},"    New Page    ${SHOP}\u002Fadmin\n",[69,120,122],{"class":71,"line":121},9,[69,123,124],{},"    Log In As    seller@example.com\n",[69,126,128],{"class":71,"line":127},10,[69,129,130],{},"    Fill Text    id=price    99.00\n",[69,132,134],{"class":71,"line":133},11,[69,135,136],{},"    Click    text=Publish\n",[69,138,140],{"class":71,"line":139},12,[69,141,106],{"emptyLinePlaceholder":105},[69,143,145],{"class":71,"line":144},13,[69,146,147],{},"    Switch Context    ${buyer}\n",[69,149,151],{"class":71,"line":150},14,[69,152,153],{},"    New Page    ${SHOP}\u002Fitem\u002F42\n",[69,155,157],{"class":71,"line":156},15,[69,158,159],{},"    Get Text    css=.price    ==    99.00\n",[24,161,162],{},"Two contexts are two isolated profiles — separate cookies, separate storage,\nseparate logins — in one browser, each created in a few milliseconds. Cypress has one\nbrowser session per test and no way to run two of them side by side, so this\nscenario is not something you write awkwardly there. It is something you do not\nwrite.",[164,165],"doc-table",{":head":166,":rows":167},"[\"\",\"Browser\",\"Cypress\"]","[[\"Runs\",\"Outside the browser, over Playwright\",\"Inside the browser, in the app's event loop\"],[\"Engines\",\"Chromium, Firefox and WebKit\",\"Chromium family, Firefox, WebKit (experimental)\"],[\"Second origin in one test\",\"Just navigate\",\"`cy.origin()`\"],[\"Multiple tabs\",\"`New Page` again\",\"Not supported\"],[\"Two browsers at once\",\"`New Browser` twice\",\"Not supported\"],[\"Two logged-in users interacting\",\"Two contexts, switched between\",\"Not supported\"]]",[169,170,171],"doc-note",{},[24,172,173],{},"WebKit matters more than the row suggests. It is the engine behind Safari, and\ntherefore every browser on iOS.",[36,175,177],{"id":176},"_2-robot-framework-tests-everything-not-only-the-web","2. Robot Framework tests everything, not only the web",[24,179,180],{},"This is the one that decides most real projects, and it has nothing to do with\nbrowsers.",[24,182,183,184,187],{},"Your system is not a web page. It is a web page ",[55,185,186],{},"and"," a REST API, a database,\na message queue, an SFTP drop, a PDF, a mainframe screen, a Windows desktop\nclient, a mobile app, a piece of hardware on a serial port. A test that logs in\nthrough the UI and verifies the result in the database is an ordinary\nrequirement, not an exotic one.",[24,189,190],{},"Robot Framework has libraries for all of that, and they compose in the same\ntest, in the same syntax, in the same report.",[24,192,193],{},"If a library does not exist for your particular thing, you write one, and the\nbar is far lower than people expect. No class, no packaging, no publishing: a\nPython file next to your tests, with a function in it, is a library. Every\nfunction becomes a keyword.",[60,195,200],{"className":196,"code":197,"filename":198,"language":199,"meta":65,"style":65},"language-python shiki shiki-themes github-light github-dark","def the_invoice_total_in_the_database(order_id):\n    ...\n    return total\n","my_stuff.py","python",[47,201,202,207,212],{"__ignoreMap":65},[69,203,204],{"class":71,"line":72},[69,205,206],{},"def the_invoice_total_in_the_database(order_id):\n",[69,208,209],{"class":71,"line":78},[69,210,211],{},"    ...\n",[69,213,214],{"class":71,"line":84},[69,215,216],{},"    return total\n",[60,218,220],{"className":62,"code":219,"language":64,"meta":65,"style":65},"*** Settings ***\nLibrary     my_stuff.py\n\n*** Test Cases ***\nExample\n    ${total} =    The Invoice Total In The Database    ${order_id}\n",[47,221,222,227,232,236,240,245],{"__ignoreMap":65},[69,223,224],{"class":71,"line":72},[69,225,226],{},"*** Settings ***\n",[69,228,229],{"class":71,"line":78},[69,230,231],{},"Library     my_stuff.py\n",[69,233,234],{"class":71,"line":84},[69,235,106],{"emptyLinePlaceholder":105},[69,237,238],{"class":71,"line":90},[69,239,75],{},[69,241,242],{"class":71,"line":96},[69,243,244],{},"Example\n",[69,246,247],{"class":71,"line":102},[69,248,249],{},"    ${total} =    The Invoice Total In The Database    ${order_id}\n",[24,251,252],{},"That is the entire mechanism. Publish it to PyPI later if other teams want it —\nor never, because most of these are three functions that only make sense in one\ncompany.",[24,254,255,256,259],{},"Cypress tests web pages, which is what it is for. When your test needs to check\nthe database, you write a task in Node and call it through ",[47,257,258],{},"cy.task"," — at which\npoint you are maintaining a small integration framework of your own, and it\nreports nothing to the log.",[36,261,263],{"id":262},"_3-keyword-driven-logged-parallel-and-open-source-in-the-whole","3. Keyword-driven, logged, parallel, and open source in the whole",[24,265,266],{},"Four things, all of which follow from Robot Framework being a test automation\nframework rather than a web-test runner.",[24,268,269,272,273,276,277,280],{},[55,270,271],{},"Compound keywords are real abstractions."," You write ",[47,274,275],{},"Given the user has an overdrawn account",", and it appears in the log ",[55,278,279],{},"as a step",", with everything it\ndid nested underneath it, collapsible. A JavaScript helper function is a\nfunction: it runs, and the log shows whatever the commands inside it happened to\nprint, flat. This is the difference between a report a business analyst can read\nand a report only its author can.",[24,282,283,286,287,294],{},[55,284,285],{},"Parallelism."," ",[288,289,293],"a",{"href":290,"rel":291},"https:\u002F\u002Fgithub.com\u002Fmkorpela\u002Fpabot",[292],"nofollow","Pabot"," splits a suite across\nprocesses, on your laptop or on one CI runner, and merges the results. It is\nfree and it is local. Cypress parallelisation is a feature of Cypress Cloud —\na paid, hosted service. You can hand-roll it with your own CI matrix, and many\nteams do, but the batteries are not included.",[24,296,297,300],{},[55,298,299],{},"Open source through and through."," Robot Framework, Browser library, Pabot and\nthe report at the end are all Apache 2.0, and there is no tier above them.\nCypress the runner is MIT; the dashboard, the parallelisation and the flake\nanalytics are the product. That is a legitimate business model. It is worth\nknowing which parts of your workflow you own and which you rent.",[24,302,303,306,307,310],{},[55,304,305],{},"Made for end-to-end testing."," Robot Framework has been running acceptance\ntests since 2005, when it was built at Nokia; it was open-sourced in 2008. Two\ndecades of people meaning ",[31,308,309],{},"acceptance"," in the contractual sense.",[24,312,313],{},"And end-to-end means end to end. A real one crosses systems — the web shop, the\npayment provider's API, the warehouse database, the confirmation email — and\noften crosses users and pages as well. Cypress describes itself as an\nend-to-end testing tool, and within one browser session on one origin it is a\nvery good one. But an end that stops at the edge of the browser tab is not the\nend of anything: the moment a scenario needs a second user, a second origin or\na system that is not a web page, the tool is not able to express it. Robot\nFramework treats all of those as ordinary.",[36,315,317],{"id":316},"_4-the-test-reads-like-the-thing-it-tests","4. The test reads like the thing it tests",[24,319,320],{},"Look at both files. Not at the line count — at what you have to know to read\nthem.",[322,323],"comparison",{":notes":324,"left":325,"right":326},"[\"Both wait automatically; neither needs an explicit sleep.\",\"Browser puts the assertion inside the keyword — Get Text reads and checks in one line.\",\"Cypress chains commands that are queued rather than executed where they appear, which is why `await` does not work as you expect in a Cypress test.\"]","comparison\u002Fcypress\u002Ftest.robot","comparison\u002Fcypress\u002Ftest.cy.js",[24,328,329,330,333,334,337,338,341,342,345],{},"The Robot Framework file is readable by someone who has never used Robot\nFramework. The JavaScript file is readable by someone who knows JavaScript,\nknows that ",[47,331,332],{},"cy"," commands enqueue rather than execute, knows why you cannot\n",[47,335,336],{},"await"," them, and knows what ",[47,339,340],{},"should('contain', ...)"," does differently from\n",[47,343,344],{},"should('have.text', ...)",".",[24,347,348],{},"That difference compounds. Tests are read far more often than they are written,\nand usually by more people than wrote them.",[36,350,352],{"id":351},"when-cypress-is-the-right-answer","When Cypress is the right answer",[24,354,355],{},"Plainly: your team is front-end developers, the tests live beside the components\nthey cover, nobody outside the team reads the results, and the system under test\nis a web application and nothing else. The Cypress runner is genuinely good to\ndevelop against, and picking the tool your team already speaks is a real\nargument.",[169,357,359],{"kind":358},"aside",[24,360,361,364,365,369,370,372],{},[55,362,363],{},"PS."," Even then, have a look at ",[288,366,368],{"href":367},"\u002Fwhy\u002Fvs-playwright","Playwright Test"," before\nyou commit. It is also JavaScript, also lives next to your components, and it\nis free of the architectural constraints described above — no ",[47,371,49],{},", no\none-session-per-test, three real engines. If the answer to \"which JavaScript\nrunner?\" is being decided today, it deserves to be in the comparison.",[24,374,375],{},"Outside those conditions — more than one technology, more than one audience for\nthe report, testers who are not JavaScript developers — the constraints start to\ncost you, and Robot Framework was built for the job you actually have.",[169,377,378],{},[24,379,380,381,385,386,391],{},"Facts on this page are checked against Cypress 15 and Browser ",[382,383],"ver",{"name":384},"browser",". If\nsomething here has become wrong,\n",[288,387,390],{"href":388,"rel":389},"https:\u002F\u002Fgithub.com\u002FMarketSquare\u002Frobotframework-browser\u002Fissues",[292],"tell us"," —\na comparison page that quietly rots is worse than none.",[393,394,395],"style",{},"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);}",{"title":65,"searchDepth":78,"depth":78,"links":397},[398,399,400,401,402],{"id":38,"depth":78,"text":39},{"id":176,"depth":78,"text":177},{"id":262,"depth":78,"text":263},{"id":316,"depth":78,"text":317},{"id":351,"depth":78,"text":352},"Cypress 15, Browser %%browser%%","md",{},"\u002Fwhy\u002Fcypress",{"title":19,"description":26},"vs-cypress","why\u002Fcypress","A JavaScript end-to-end runner that lives inside the browser it tests.","Cypress","mF1fkPN8YYeswBecnRvV-jnU23DAtEa8xyFmi_Hd9oE",[414,417,419],{"to":415,"label":416},"\u002Fwhy\u002Fvs-cypress","vs Cypress",{"to":367,"label":418},"vs Playwright Test",{"to":420,"label":421},"\u002Fwhy\u002Fvs-seleniumlibrary","vs SeleniumLibrary",[423],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF6B5E;font-weight:bold\">*** Test Cases ***\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">The Buyer Sees The Seller's Price Change\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Browser\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    chromium\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">seller\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">    New Context\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">buyer\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">     New Context\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Switch Context\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">seller\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">SHOP\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Fadmin\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Log In As\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    seller@example.com\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Fill Text\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    id=price\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    99.00\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Click\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    text=Publish\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Switch Context\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">buyer\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">SHOP\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Fitem\u002F42\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Text\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    css=.price\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    ==\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    99.00\u003C\u002Fspan>\u003C\u002Fspan>",[425],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">def\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\"> the_invoice_total_in_the_database\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\">order_id\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">):\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E2E1D7\">    ...\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#C9A6E9\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\"> total\u003C\u002Fspan>\u003C\u002Fspan>",[427],"\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\">     my_stuff.py\u003C\u002Fspan>\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\">Example\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">total\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003Cspan style=\"color:#FF6B5E\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">    The Invoice Total In The Database\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">    ${\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">order_id\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">}\u003C\u002Fspan>\u003C\u002Fspan>",[429],"\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\">My First Test\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E2E1D7\">    [\u003C\u002Fspan>\u003Cspan style=\"color:#C9A6E9\">Documentation\u003C\u002Fspan>\u003Cspan style=\"color:#E2E1D7\">]    \u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">Gets,\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> types\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> and\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> asserts\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    New Page\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    https:\u002F\u002Fexample.cypress.io\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Click\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    \"type\"\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Url\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    *=\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    \u002Fcommands\u002Factions\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Type Text\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    .action-email\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    fake@email.com\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">    Get Text\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">     .action-email\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    ==\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">    fake@email.com\u003C\u002Fspan>\u003C\u002Fspan>",[431],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">describe\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">My First Test\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\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:#2BD9CC\">    it\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">Gets, types and asserts\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\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:#FFB86B\">      cy\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">visit\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">https:\u002F\u002Fexample.cypress.io\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFB86B\">      cy\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">contains\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">type\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:#FFB86B\">      cy\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">url\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">().\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">should\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">include\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> '\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">\u002Fcommands\u002Factions\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFB86B\">      cy\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">get\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">.action-email\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">).\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">type\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">fake@email.com\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFB86B\">      cy\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">.\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">get\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">.action-email\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">).\u003C\u002Fspan>\u003Cspan style=\"color:#2BD9CC\">should\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">have.value\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">,\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\"> '\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">fake@email.com\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">'\u003C\u002Fspan>\u003Cspan style=\"color:#A9B4BA\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">    })\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#A9B4BA\">  })\u003C\u002Fspan>\u003C\u002Fspan>",1786734137025]