[{"data":1,"prerenderedAt":436},["ShallowReactive",2],{"SiteFooter_cLEacilcm59lTjFJjLY6mXNWLL0ETtzOIiZwIHgDpy0":3,"community":17,"nav-compare":408,"editor-1n5zq79":418,"CoreTeamBody_mv3RY1lLnhPCgdoRdOfIsWGe99ZEwd1yCghua0Qz3M":420,"ContributorWallBody_2cCgL6F7gHq9CYdeVqjY5pmCbRU2lP5bPfJXkO7U":428},["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":400,"extension":401,"meta":402,"navigation":403,"path":404,"seo":405,"stem":406,"__hash__":407},"pages\u002Fcommunity.md","Community",{"type":21,"value":22,"toc":391},"minimark",[23,56,97,316,323,387],[24,25,27,35,43],"page-hero",{"logo":26},"\u002Flogo\u002Fbrowser.svg",[28,29,31],"template",{"v-slot:title":30},"",[32,33,34],"p",{},"Built by the people who use it.",[32,36,37,38,42],{},"Browser library is built in the open by ",[39,40,41],"strong",{},"206 people so far",", and supported by\ncompanies who decided it was worth funding. Most of those people started the\nsame way: they found something, said something, and made it better. That is a\nlower bar than it sounds, and you are already close enough to clear it.",[44,45,46,52],"btn-row",{},[47,48,51],"btn",{"to":49,":primary":50},"#ways","true","Ways to help",[47,53,55],{"to":54},"#hall","The people",[57,58,61,64],"page-section",{"label":59,"title":60},"Where we are","Come and say hello.",[32,62,63],{},"Three places, and they are good at different things. None of them requires you\nto have a bug, or to know what you are doing yet.",[65,66,67,81,89],"card-grid",{},[68,69,73],"card",{"accent":70,"title":71,"to":72},"red","Slack — #browser","https:\u002F\u002Frobotframework.org\u002F#community",[32,74,75,76,80],{},"The fast one. Half-formed questions welcome, and the people who wrote the\nlibrary read it. Join the Robot Framework workspace from the community section,\nthen find ",[77,78,79],"code",{},"#browser",".",[68,82,86],{"accent":83,"title":84,"to":85},"teal","Forum","https:\u002F\u002Fforum.robotframework.org\u002F",[32,87,88],{},"The one that lasts. A forum thread is still findable in two years, which makes\nit the better place for anything the next person will also wonder about.",[68,90,94],{"accent":91,"title":92,"to":93},"green","GitHub","https:\u002F\u002Fgithub.com\u002FMarketSquare\u002Frobotframework-browser",[32,95,96],{},"Where the work happens — issues, pull requests, releases. Everything is decided\nin the open, including the things we get wrong.",[57,98,102,105,108,113,116,123,129,133,136,139,143,146,149,153,160,168,179,230,244,247,252,256,259,273,276,285,289,292,295,305],{"label":51,"title":99,"id":100,"tone":101},"Contributing is not only pull requests.","ways","panel",[32,103,104],{},"Most of what keeps this library good is not code. It is people telling us what\nbroke, what confused them, and what they wish it did.",[32,106,107],{},"Below, roughly in order of how much setup they need — the first two cost nothing\nbut attention.",[109,110,112],"h3",{"id":111},"_1-tell-us-what-you-found","1. Tell us what you found",[32,114,115],{},"An issue is not a complaint, it is data. We cannot fix what nobody reports, and\nwe cannot prioritise what nobody asks for.",[32,117,118,119,122],{},"A good one takes ten minutes: what you ran, what you expected, what happened,\nand your versions from ",[77,120,121],{},"rfbrowser --version",". A short reproduction beats a long\ndescription every time. Feature ideas are just as welcome — say what you are\ntrying to achieve rather than what API you want, and we can usually find\nsomething better together.",[44,124,125],{},[47,126,128],{"to":127,":primary":50},"https:\u002F\u002Fgithub.com\u002FMarketSquare\u002Frobotframework-browser\u002Fissues\u002Fnew\u002Fchoose","Open an issue",[109,130,132],{"id":131},"_2-answer-someone","2. Answer someone",[32,134,135],{},"You do not need to be an expert. If you solved something last month, you know\nmore about it than the person hitting it today.",[32,137,138],{},"Every answered question in Slack or the forum is a question the core team does\nnot have to answer — and, if you write it in the forum, one that answers itself\nfor everyone who searches later. This is the single highest-leverage thing a\nhappy user can do.",[109,140,142],{"id":141},"_3-improve-the-documentation","3. Improve the documentation",[32,144,145],{},"You are reading it. If a page is wrong, out of date, or explains the easy part\nand skips the hard one, that is a bug, and it is one you are unusually well\nplaced to fix — you just hit it.",[32,147,148],{},"Docs changes need no development environment. The site's pages are Markdown in\nthe repository, and typo-sized fixes are perfectly welcome pull requests. So are\nissues that just say \"this paragraph made no sense to me\".",[109,150,152],{"id":151},"_4-test-main-before-it-becomes-a-release","4. Test main before it becomes a release",[32,154,155,156,159],{},"We do not ship release candidates, so there is nothing to wait for. Instead,\n",[39,157,158],{},"every commit to main that passes CI builds an installable wheel",", and you can\nhave it within a minute of a fix landing.",[32,161,162,163,167],{},"Running it against your own suite for ten minutes is worth more than any amount\nof testing we can do ourselves, because your suite does things ours never\nthought of. It is also the only way a regression gets caught ",[164,165,166],"em",{},"before"," it is in a\nrelease rather than after.",[32,169,170,171,174,175,178],{},"Take the wheel from the latest green ",[39,172,173],{},"Continuous integration"," run on main —\nActions → the run → Artifacts → ",[77,176,177],{},"rfbrowser-wheel"," — then, in a throwaway\nvirtual environment rather than the one you work in:",[180,181,185],"pre",{"className":182,"code":183,"language":184,"meta":30,"style":30},"language-bash shiki shiki-themes github-light github-dark","pip install --force-reinstall robotframework_browser-*-py3-none-any.whl\nrfbrowser clean-node\nrfbrowser init\n","bash",[77,186,187,213,222],{"__ignoreMap":30},[188,189,192,196,200,204,207,210],"span",{"class":190,"line":191},"line",1,[188,193,195],{"class":194},"sScJk","pip",[188,197,199],{"class":198},"sZZnC"," install",[188,201,203],{"class":202},"sj4cs"," --force-reinstall",[188,205,206],{"class":198}," robotframework_browser-",[188,208,209],{"class":202},"*",[188,211,212],{"class":198},"-py3-none-any.whl\n",[188,214,216,219],{"class":190,"line":215},2,[188,217,218],{"class":194},"rfbrowser",[188,220,221],{"class":198}," clean-node\n",[188,223,225,227],{"class":190,"line":224},3,[188,226,218],{"class":194},[188,228,229],{"class":198}," init\n",[231,232,234],"doc-note",{"kind":233},"warning",[32,235,236,239,240,243],{},[77,237,238],{},"clean-node"," and ",[77,241,242],{},"init"," are not optional. The wheel carries a new Node side, and\nskipping them leaves the previous one in place — so you end up testing a Python\nhalf and a Node half that were never built together, and any failure tells you\nnothing.",[32,245,246],{},"Tell us either way. \"Ran our 400 tests against main, nothing broke\" is genuinely\nuseful information, and it is the report we get least often.",[231,248,249],{},[32,250,251],{},"Build artifacts need a GitHub account to download and are cleaned up after a\nwhile, so take one from a recent run. This way of testing is new — if the steps\nabove do not work for you, that is worth an issue in itself.",[109,253,255],{"id":254},"_5-build-a-plugin-and-publish-it","5. Build a plugin, and publish it",[32,257,258],{},"Not everything belongs in the library. Browser has a plugin API and a JavaScript\nextension mechanism precisely so that your idea does not have to wait for our\nreview — you can build it, publish it, and own it.",[32,260,261,262,269,270],{},"And then tell people it exists, which is the step everyone skips.\n",[263,264,268],"a",{"href":265,"rel":266},"https:\u002F\u002Fgithub.com\u002FMarketSquare\u002Frobotframework-browser-extensions",[267],"nofollow","robotframework-browser-extensions","\ncollects the ones that work — accessibility checks with axe-core, visual\ncomparison, network throttling, request mocking, element highlighting. It is a\nmonorepo, not a registry: ",[39,271,272],{},"if yours works, open a pull request and it goes in.",[32,274,275],{},"That is also the strongest possible argument for bringing a feature into the\nlibrary itself. Something people are already installing has proven demand behind\nit, and several features arrived exactly that way.",[44,277,278,282],{},[47,279,281],{"to":280,":primary":50},"\u002Fdocs\u002Fextending\u002Fpython-plugins","Extending Browser",[47,283,284],{"to":265},"Browse the extensions",[109,286,288],{"id":287},"_6-send-a-pull-request","6. Send a pull request",[32,290,291],{},"And yes — code. Bug fixes, keywords, tests, type hints.",[32,293,294],{},"Start by opening an issue or asking in Slack, unless the change is small. Not\ngatekeeping: it is so nobody spends a weekend on something that turns out to\nconflict with a change already in flight. The contribution guide covers the\ndevelopment environment, the test suites and the conventions.",[44,296,297,301],{},[47,298,300],{"to":299,":primary":50},"https:\u002F\u002Fgithub.com\u002FMarketSquare\u002Frobotframework-browser\u002Fblob\u002Fmain\u002FCONTRIBUTING.md","Contribution guide",[47,302,304],{"to":303},"https:\u002F\u002Fgithub.com\u002FMarketSquare\u002Frobotframework-browser\u002Fissues","Find an issue",[231,306,307],{},[32,308,309,310,315],{},"Whichever of these you pick, you get added to the list below. The\n",[263,311,314],{"href":312,"rel":313},"https:\u002F\u002Fallcontributors.org\u002F",[267],"all-contributors"," bot tracks every kind of\ncontribution, not just commits — because a bug report that saved a release is\nnot worth less than the patch that fixed it.",[57,317,320],{"label":318,"title":319},"Who keeps it running","The core team.",[321,322],"core-team",{},[57,324,328,331,334,337,341,344,379],{"label":325,"title":326,"id":327,"tone":101,":last":50},"Hall of fame","Everyone who built this.","hall",[32,329,330],{},"206 people, and counting. Filter by what they did — most of them never wrote a\nline of code for Browser, which is rather the point.",[332,333],"contributor-wall",{},[32,335,336],{},"Missing from this list, or listed wrongly? Say so in an issue — being forgotten\nis a bug too.",[109,338,340],{"id":339},"who-pays-for-it","Who pays for it",[32,342,343],{},"Open source is not the same as free to produce. Some of the work above was paid\nfor, and it is worth being specific about by whom:",[345,346,347,358,369],"ul",{},[348,349,350,357],"li",{},[39,351,352],{},[263,353,356],{"href":354,"rel":355},"https:\u002F\u002Frobocorp.com\u002F",[267],"Robocorp"," funded the initial development. Browser\nexists in the first place because they backed it.",[348,359,360,361,368],{},"The ",[39,362,363],{},[263,364,367],{"href":365,"rel":366},"https:\u002F\u002Frobotframework.org\u002Ffoundation\u002F",[267],"Robot Framework Foundation","\nhas funded development several times since, out of its members' fees.",[348,370,371,378],{},[39,372,373],{},[263,374,377],{"href":375,"rel":376},"https:\u002F\u002Fwww.imbus.de\u002F",[267],"imbus"," sponsors development time for one of the\nmaintainers, so that maintenance is somebody's job rather than only their\nevenings.",[32,380,381,382,386],{},"None of that makes Browser a product with a vendor behind it — the roadmap is\nstill decided in the open, by the people doing the work. But if your company\ndepends on this library, ",[263,383,385],{"href":365,"rel":384},[267],"joining the Foundation","\nis a way to contribute that costs nobody their spare time, and it is what keeps\nthe funded work funded.",[388,389,390],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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":30,"searchDepth":215,"depth":215,"links":392},[393,394,395,396,397,398,399],{"id":111,"depth":224,"text":112},{"id":131,"depth":224,"text":132},{"id":141,"depth":224,"text":142},{"id":151,"depth":224,"text":152},{"id":254,"depth":224,"text":255},{"id":287,"depth":224,"text":288},{"id":339,"depth":224,"text":340},"Browser is built by the people who use it. Where to find us, six ways to contribute — most of which are not code — and everyone who already has.","md",{},true,"\u002Fcommunity",{"title":19,"description":400},"community","0aO9nkZ1MMpg_2ycYiTPRtwCTEm7PvNhwzt6fVPfECk",[409,412,415],{"to":410,"label":411},"\u002Fwhy\u002Fvs-cypress","vs Cypress",{"to":413,"label":414},"\u002Fwhy\u002Fvs-playwright","vs Playwright Test",{"to":416,"label":417},"\u002Fwhy\u002Fvs-seleniumlibrary","vs SeleniumLibrary",[419],"\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">pip\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> --force-reinstall\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> robotframework_browser-\u003C\u002Fspan>\u003Cspan style=\"color:#FFB86B\">*\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\">-py3-none-any.whl\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">rfbrowser\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> clean-node\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"color:#2BD9CC\">rfbrowser\u003C\u002Fspan>\u003Cspan style=\"color:#E0D3A3\"> init\u003C\u002Fspan>\u003C\u002Fspan>",["Island",421],{"key":422,"result":423},"CoreTeamBody_mv3RY1lLnhPCgdoRdOfIsWGe99ZEwd1yCghua0Qz3M",{"head":424},{"style":425},[426],{"innerHTML":427},".team[data-v-486d1257]{gap:var(--sp-8)}.group[data-v-486d1257],.team[data-v-486d1257]{flex-direction:column;display:flex}.group[data-v-486d1257]{gap:var(--sp-2)}.group-name[data-v-486d1257]{font-family:var(--font-display);font-size:var(--step-1);font-weight:400}.group-note[data-v-486d1257]{color:var(--dim);max-width:44rem}.row[data-v-486d1257]{margin:var(--sp-2) 0 0;flex-wrap:wrap;padding:0;list-style:none}.member[data-v-486d1257],.row[data-v-486d1257]{gap:var(--sp-3);display:flex}.member[data-v-486d1257]{padding:var(--sp-3) var(--sp-4) var(--sp-3) var(--sp-3);border-bottom:1px solid var(--line);border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(var(--red),var(--red)) 0 0 \u002F2px 100% no-repeat,var(--panel);color:var(--ink);align-items:center}.member.is-alum[data-v-486d1257]{background:linear-gradient(var(--teal),var(--teal)) 0 0 \u002F2px 100% no-repeat,var(--panel)}.member[data-v-486d1257]:hover{border-color:var(--line-strong)}.face[data-v-486d1257]{background:var(--chrome);border-radius:50%;flex:none}.who[data-v-486d1257]{flex-direction:column;gap:1px;min-width:0;display:flex}.name[data-v-486d1257]{font-family:var(--font-display);font-size:.95rem}.login[data-v-486d1257]{font-family:var(--font-mono);color:var(--faint);font-size:.75rem}@supports (corner-shape:bevel){.member[data-v-486d1257]{corner-shape:bevel}}",["Island",429],{"key":430,"result":431},"ContributorWallBody_2cCgL6F7gHq9CYdeVqjY5pmCbRU2lP5bPfJXkO7U",{"head":432},{"style":433},[434],{"innerHTML":435},".wall-block[data-v-cc9b811b]{gap:var(--sp-4);flex-direction:column;display:flex}.pick[data-v-cc9b811b],.sr-only[data-v-cc9b811b]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.filters[data-v-cc9b811b]{gap:var(--sp-2);border:0;flex-wrap:wrap;margin:0;padding:0;display:flex}.filters label[data-v-cc9b811b]{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--radius-sm);font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--dim);cursor:pointer;background:var(--panel);font-size:.72rem;display:inline-flex}.filters label[data-v-cc9b811b]:hover{color:var(--ink);border-color:var(--line-strong)}.count[data-v-cc9b811b]{font-family:var(--font-mono);color:var(--dim);letter-spacing:0;font-size:.7rem}#way-all:checked~.filters label[for=way-all][data-v-cc9b811b],#way-code:checked~.filters label[for=way-code][data-v-cc9b811b],#way-docs:checked~.filters label[for=way-docs][data-v-cc9b811b],#way-report:checked~.filters label[for=way-report][data-v-cc9b811b],#way-support:checked~.filters label[for=way-support][data-v-cc9b811b],#way-testing:checked~.filters label[for=way-testing][data-v-cc9b811b]{color:var(--ink);border-color:var(--red);background:var(--chrome)}#way-all:focus-visible~.filters label[for=way-all][data-v-cc9b811b],#way-code:focus-visible~.filters label[for=way-code][data-v-cc9b811b],#way-docs:focus-visible~.filters label[for=way-docs][data-v-cc9b811b],#way-report:focus-visible~.filters label[for=way-report][data-v-cc9b811b],#way-support:focus-visible~.filters label[for=way-support][data-v-cc9b811b],#way-testing:focus-visible~.filters label[for=way-testing][data-v-cc9b811b]{outline:2px solid var(--red);outline-offset:2px}.wall[data-v-cc9b811b]{gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));margin:0;padding:0;list-style:none;display:grid}#way-code:checked~.wall li[data-v-cc9b811b]:not(.w-code),#way-docs:checked~.wall li[data-v-cc9b811b]:not(.w-docs),#way-report:checked~.wall li[data-v-cc9b811b]:not(.w-report),#way-support:checked~.wall li[data-v-cc9b811b]:not(.w-support),#way-testing:checked~.wall li[data-v-cc9b811b]:not(.w-testing){display:none}.wall.is-compact[data-v-cc9b811b]{gap:var(--sp-1);grid-template-columns:repeat(auto-fill,minmax(2.5rem,1fr))}.wall.is-compact .person[data-v-cc9b811b]{padding:0}.rest a[data-v-cc9b811b]{border-bottom:1px dashed var(--line-strong);border:1px dashed var(--line-strong);width:40px;height:40px;font-family:var(--font-display);color:var(--dim);border-radius:50%;justify-content:center;align-items:center;font-size:.62rem;display:flex}.rest a[data-v-cc9b811b]:hover{border-color:var(--red);color:var(--ink)}.wall.is-compact .face[data-v-cc9b811b]{transition:transform .1s}.wall.is-compact .person[data-v-cc9b811b]:hover{background:0 0}.wall.is-compact .person:hover .face[data-v-cc9b811b]{transform:scale(1.12)}@media (prefers-reduced-motion:reduce){.wall.is-compact .face[data-v-cc9b811b]{transition:none}.wall.is-compact .person:hover .face[data-v-cc9b811b]{transform:none}}.person[data-v-cc9b811b]{align-items:center;gap:var(--sp-2);padding:var(--sp-2);border-radius:var(--radius-sm);color:var(--ink);border-bottom:0;min-width:0;display:flex}.person[data-v-cc9b811b]:hover{background:var(--panel)}.face[data-v-cc9b811b]{background:var(--chrome);border-radius:50%;flex:none}.name[data-v-cc9b811b]{overflow-wrap:anywhere;font-size:.82rem;line-height:1.3}@media (width\u003C=600px){.wall[data-v-cc9b811b]{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr))}}",1786734137020]