# Robot Framework Browser > Browser is a Robot Framework library for web testing and browser automation, powered by Playwright. It drives Chromium, Firefox and WebKit, waits automatically, and builds assertions into the keywords that read from the page. ## Documentation Sets - [Robot Framework Browser — full documentation](https://robotframework-browser.org/llms-full.txt): The landing page, every docs page in reading order and the comparisons, as one Markdown document. ## Start here - [Robot Framework Browser](https://robotframework-browser.org/raw/index.md): A browser automation library for Robot Framework, powered by Playwright. Speed, reliability and visibility, with assertions built into the keywords. - [Keyword reference (Browser 21.0.0)](https://robotframework-browser.org/keywords.md): Every keyword with its arguments, types, defaults and documentation, and every argument type. ## Docs: Getting started - [Installation](https://robotframework-browser.org/raw/docs/start/installation.md): The two ways to install Browser — with a bundled Node.js runtime, or with one you provide yourself — and how to upgrade and remove each. - [Getting started](https://robotframework-browser.org/raw/docs/start/getting-started.md): Install Browser, write a first test, and run it. ## Docs: Core concepts - [Browser, context and page](https://robotframework-browser.org/raw/docs/concepts/browser-context-page.md): The three layers Playwright is built on — and why a new context is the cheapest clean slate you will ever get. - [Finding elements](https://robotframework-browser.org/raw/docs/concepts/selectors.md): Which selector strategy to reach for, why the order matters, and how to chain across iframes and shadow DOM. - [Assertions](https://robotframework-browser.org/raw/docs/concepts/assertions.md): Almost every getter can assert, every assertion retries, and each return type allows different operators. The complete AssertionEngine reference. - [Waiting and promises](https://robotframework-browser.org/raw/docs/concepts/waiting.md): 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. - [How Browser works](https://robotframework-browser.org/raw/docs/concepts/architecture.md): Python, a Node process and Playwright — what runs where, and where the files land. - [Logging and debugging](https://robotframework-browser.org/raw/docs/concepts/logging.md): Four places Browser tells you what happened — log.html, the Playwright log, traces and coverage. ## Docs: Recording keywords - [Recording keywords](https://robotframework-browser.org/raw/docs/recording/record-keywords.md): Click through the page and get a reusable user keyword, written into your suite while you work. Record Keyword and Record Keywords in five minutes. - [The recorder toolbar](https://robotframework-browser.org/raw/docs/recording/toolbar.md): Name and start keywords, save, undo and discard them, end the session, and keep the toolbar out of the page's way. - [Keyword arguments](https://robotframework-browser.org/raw/docs/recording/arguments.md): Turn a recorded value, part of it or part of a selector into an argument while you record — with or without a default, and everywhere it occurs. - [What gets recorded](https://robotframework-browser.org/raw/docs/recording/what-gets-recorded.md): Which Browser keyword each action becomes, how popups, dialogs, downloads and uploads are handled, recording assertions, and the selectors the recorder writes. - [Where recorded keywords go](https://robotframework-browser.org/raw/docs/recording/files.md): The suite file, a resource file or only the log; written live after every action; what the recorder changes in a file and what it never touches. - [Recording selectors](https://robotframework-browser.org/raw/docs/recording/selectors.md): Pick an element in the live browser and get a selector for it — Playwright's or a CSS one, checked against the page while you edit it. - [Good practice and limits](https://robotframework-browser.org/raw/docs/recording/practice.md): How to record keywords worth keeping, what to check before you commit one, what the recorder cannot do, and what to do when it goes wrong. ## Docs: Mobile web - [Testing responsive pages](https://robotframework-browser.org/raw/docs/mobile/responsive.md): Why a browser at a phone-sized viewport tests responsiveness properly, what emulation cannot tell you, and where real devices actually belong. - [Emulating a device](https://robotframework-browser.org/raw/docs/mobile/devices.md): Device descriptors, what the six or seven properties they set actually change, and the one that emulation cannot give you. - [Touch, permissions and location](https://robotframework-browser.org/raw/docs/mobile/touch.md): 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. - [Every device descriptor](https://robotframework-browser.org/raw/docs/mobile/device-list.md): The full list of names Get Device accepts, with the viewport, pixel ratio, touch and engine each one sets — filterable and sortable. ## Docs: Extending Browser - [Python plugins](https://robotframework-browser.org/raw/docs/extending/python-plugins.md): Add or replace keywords from Python, with access to the library's own API and to the Node side. - [Just enough JavaScript](https://robotframework-browser.org/raw/docs/extending/javascript-basics.md): The JavaScript you need to write extensions and Evaluate JavaScript, for people who write Python. - [JavaScript extensions](https://robotframework-browser.org/raw/docs/extending/javascript-extensions.md): Add keywords that run on the Node side with full Playwright access — and attach a debugger to them. - [Your own Python library](https://robotframework-browser.org/raw/docs/extending/python-libraries.md): Move business logic out of Robot Framework and keep Browser exactly as it is. - [Browser as a base](https://robotframework-browser.org/raw/docs/extending/browser-as-a-base.md): Own the Browser instance in your own library — what you get free, what one line restores, and what you build yourself. - [Translating keywords](https://robotframework-browser.org/raw/docs/extending/translations.md): Using a translation package to get keyword names and documentation in your language, and writing one for a language nobody has covered yet. ## Docs: Running it - [The Node process](https://robotframework-browser.org/raw/docs/operations/node-process.md): 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. - [Environment variables](https://robotframework-browser.org/raw/docs/operations/environment-variables.md): The variables that change how Browser behaves, which of them are safe in production, and the import parameters that should usually be preferred. - [Running in Docker](https://robotframework-browser.org/raw/docs/operations/docker.md): The published Browser image, the four docker run flags that matter, and why running as root breaks Chromium. - [Building your own image](https://robotframework-browser.org/raw/docs/operations/docker-images.md): Extending the published image with your dependencies, the version lock between Browser and Playwright, and using it as a CI job container. ## Comparisons Browser compared with other tools, each argued with a code example. - [Browser vs Cypress](https://robotframework-browser.org/raw/why/cypress.md): A JavaScript end-to-end runner that lives inside the browser it tests. - [Browser vs Playwright Test](https://robotframework-browser.org/raw/why/playwright.md): Microsoft's browser automation framework, and its TypeScript test runner. - [Browser vs SeleniumLibrary](https://robotframework-browser.org/raw/why/seleniumlibrary.md): The long-standing Robot Framework web library, built on Selenium WebDriver. ## Release notes Newest first. Read these when upgrading: breaking changes are listed per release. - [Browser 21.0.0](https://robotframework-browser.org/raw/releases/21.0.0.md): November 1, 2026. Record keywords in the live browser: Record Keyword and Record Keywords - [Browser 20.6.0](https://robotframework-browser.org/raw/releases/20.6.0.md): October 3, 2026. Implement documented arguments for Robot Framework 7.5 - [Browser 20.5.0](https://robotframework-browser.org/raw/releases/20.5.0.md): September 20, 2026. Raise minimum needed Robot Framework version to 7.1.1 - [Browser 20.4.0](https://robotframework-browser.org/raw/releases/20.4.0.md): August 19, 2026. Several small issues found while auditing the docs against the code - [Browser 20.3.0](https://robotframework-browser.org/raw/releases/20.3.0.md): August 7, 2026. Bumb BrowserBatteries node to 24.19 - [Browser 20.2.0](https://robotframework-browser.org/raw/releases/20.2.0.md): August 1, 2026. Update Playwright 1.62.0 - [Browser 20.1.0](https://robotframework-browser.org/raw/releases/20.1.0.md): July 22, 2026. Get Text Keyword returns value attribute instead of the text of an option element - [Browser 20.0.0](https://robotframework-browser.org/raw/releases/20.0.0.md): June 7, 2026. Implement keyword for allTextContents - [Browser 19.15.1](https://robotframework-browser.org/raw/releases/19.15.1.md): May 14, 2026 - [Browser 19.15.0](https://robotframework-browser.org/raw/releases/19.15.0.md): May 9, 2026 - [Browser 19.14.2](https://robotframework-browser.org/raw/releases/19.14.2.md): April 6, 2026. Fix release process - [Browser 19.13.0](https://robotframework-browser.org/raw/releases/19.13.0.md): April 1, 2026. Create unit test and coverage for NodeJS side - [Browser 19.12.7](https://robotframework-browser.org/raw/releases/19.12.7.md): March 19, 2026. Downgrade grpcio to 1.78.0 - [Browser 19.12.6](https://robotframework-browser.org/raw/releases/19.12.6.md): March 18, 2026. grpc message size limits causes keyword failures with large DOMs - [Browser 19.12.5](https://robotframework-browser.org/raw/releases/19.12.5.md): February 11, 2026. Playwright 1.58.2 support - [Browser 19.12.4](https://robotframework-browser.org/raw/releases/19.12.4.md): January 30, 2026 ## Optional - [Community](https://robotframework-browser.org/raw/community.md): 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. ## Notes - These pages describe Browser 21.0.0, tested against Playwright 1.64.1. Install with `pip install "robotframework-browser[bb]"` and `rfbrowser install` (Node.js bundled), or `pip install robotframework-browser` and `rfbrowser init` with your own Node.js. - Every link above is the Markdown of a page; the "Source" line at its top is the same page as HTML. - Keyword documentation for older versions is at https://robotframework-browser.org/keywords/, e.g. /keywords/20.6.0. - Source code and issues: https://github.com/MarketSquare/robotframework-browser.