* feat: extend Cypress.Keyboard.Keys and cy.press to support all keyboard keys * Update cli/types/cypress.d.ts * reference urls for codepoints * type defs for expanded keys; tests * changelog * rm modifier keys temporarily - see WIP @ feat/key-press-modifier-keys * Add pr link to changelog * reduce repetition with key codes; remove unsupported capslock keycode * only "key" special function keys in Cypress.Keyboard.Keys - otherwise, support any single character even if multiple codepoints * do not refocus on f6 - f6 behavior keyup is indeterminate, so do not assert in that special case * clean up keyboard key types, clean up duplicate def from merge * various cleanup - wip - need multi-codepoint fix * support multi-codepoint characters * properly dispatch each part of a multipart utf-8 character * fix import * fix dtslint * tscheck * fix spacing * Apply suggestions from code review * changelog * changelog * ensure input actions are released in bidi; add test for keypress and input events for firefox * fix keypress & input events in chrome * consistent debug * rm debug logging from input fixture * some typos, changelog version * fix toSupportedKey guard fn to properly reject non-strings * add Space as named key, remove warnings re legacy firefox * fix space * support single-digit number keys * remove support for F-keys * add test cmd to types pkg * rm failing vitest project config * fix changelog * clean up types a bit for single digit numbers * more updates --------- Co-authored-by: Cacie Prins <cacie@cypress.io> Co-authored-by: Cacie Prins <cacieprins@users.noreply.github.com>
Driver
This is the core JavaScript library that is loaded inside the browser that is responsible for executing Cypress commands and managing the test runtime.
Building
The driver is actually consumed by the runner like any other npm module. To develop the driver and see changes reflected you need to run the watch task inside of the runner.
yarn workspace @packages/runner watch
Developing
If you're developing on the driver, you'll want to run in the normal Cypress GUI mode, like you would when you're writing tests for your own Cypress projects.
yarn workspace @packages/driver cypress:open
Read the runner's README.md for more information.
Running
You can also run all of the driver's tests locally. We don't really recommend this because it takes a long time, and we have this process optimized by load balancing the tests across multiple workers in CI.
It's usually easier to run the tests in the GUI, commit, and then see if anything broke elsewhere.
# in separate terminal
yarn workspace @packages/driver cypress:run
# or for development
yarn workspace @packages/driver cypress:open
Debug Logs
The debug module is used to generate debug logs for the driver. In the browser, you can enable driver debug logs by setting localStorage.debug in the console:
localStorage.debug = "cypress:driver,cypress:driver:*"
Note: you may need to enable "Verbose" or "Debug" log levels inside the browser's developer tools, since not all browsers display debug logs by default.
Patches
Note: when creating a patch, make sure there is no package-lock.json file! Also rename the patch to have ".dev.patch" extension.
Cross-origin Testing
Working on cross-origin testing or reviewing a PR related to it? Check out the Cross-origin Testing Technical Overview.