* Change the way e2e logs in for tests, enable unauthenticated tests
* Change the SSH clipboard test to use the browser selector instead of skipping
* Remove workaround in darktheme test
* Share login state for connect tests
* Keep the DisposableTempDir instead of the path
* Support ssh:// DOCKER_HOST
* Allow specs to pin themselves to browsers
* Add ssh-node-bpf fixture
* Run a separate node per requested ssh-node fixture
* Run every Teleport config pass even if an earlier one fails
* Fix e2e/runner linting
* Move the inactivity event helper to the base recording processor
* Expose per-frame activity signals from the desktop thumbnail generator
* Emit inactivity events for desktop session recordings
* Add a test for a fully inactive desktop session
* Change to defer
* Track changed pixels by region to differentiate between typing and clock
* Avoid marking typing as inactivity
* Add mouse button detection
* Only track inactivity if the decoder is available
* Declare missing peers so pnpm global virtual store works
* Add storybook/react-vite for storybook
* Pin to major versions
* Fix Storybook not working with pnpm virtual store
* Add audit event for Classifier delete, docs, and web UI support
* Add failure code for the Classifier delete audit event
* Add web UI and docs support for Classifier audit failure codes
* Add Terraform schema for the Classifier resource
* Regenerate Classifier Terraform schema for tri-state action enums
* Add audit event for Classifier delete, docs, and web UI support
* Add failure code for the Classifier delete audit event
* Add web UI and docs support for Classifier audit failure codes
* Add audit events for Classifier create and update
* Add failure codes for Classifier create and update audit events
* Add web UI and docs support for Classifier create and update audit events
* Add Classifier backend storage, cache, gRPC service, and tctl support
* Fix formatting in lib/services/summarizer_test.go
* Replace Cache.AllClassifiers with RangeClassifiers using genericLister
* Validate that the filter is a boolean expression
* Code review fixes: sync test, range fallback
* Add skip inactivity and timeline time updates to the desktop session player
* rAF -> requestAnimationFrame
* Avoid redrawing the timeline/events whilst not playing
* Hide non-interactive sessions by default
* Add badge and decorator slots to list session recordings
* Update test assertion
* Flip the search params to the new hide non-interactive state
* Fixes for the non-interactive flip
* Remove duplicate BadgeComponent check
* Add property-based testing for thumbnails/metadata generation
* Convert the resize test to a normal table test
* Increase the timeouts
* Reduce dimensions to avoid CI from dying
* Composite the cursor in Rust during ResizeCrop
* Apply code review feedback
* Update test
* Move CursorBitmap to an enum, remove Cow, avoid cloning the bitmap
* Remove dereference
* Invalidate E2E Rust cache on decoder changes
* Resize RDP images in Rust instead of Go
* go mod tidy all
* cargo fmt
* Add tests
* Remove unused Thumbnail()
* Change ResizeCrop() to return an error
* Avoid hard-coding the bytes per pixel
* Release resources in tests
* Clamp dimensions to at least 1x1
* Add x/image to e_imports
* Fix linting
* Fold resize options and crop bounds check into resize_crop_into
* Run cargo fetch
* Add property-based testing for RDPState
* Move max screen size to separate test to avoid 8192x8192 framebuffer allocation
* Be consistent with avoiding IronRDP OOB
* Move rapid draws to outside of the run
* Fix bug in test util WrapFastPathPDU
* Reduce allocations in CI, fix row byte calculatino
* Add a dedicated login e2e test
* Remove authenticated setup tests from summary
* Change Roles assertion to a header assertion
* pnpm format
* Avoid collisions during report merging
* Use global setup to avoid authentication tests appearing in report
* Add browser name back to auth state file
* Make the default export nicer
* Surface non-test errors and fix stat tally in runner report
* Generate auth state via global setup for browse/codegen
* Report flaky test details and name failing tests
* Persist trace attachments for --test-results
* Make signup test retry-safe and tolerate login rate limit
* pnpm format
* Skip global setup when there are no bootstrapped users
* Make darktheme test retry-safe and tolerate login rate limit
* Add session event to enhanced summaries for desktop + other recording type events
* Add more comments to proto
* Fix proto numbers
* Handle deprecation in recording TUI
* Move the e2e workflow to be composable
* Add support for tctl applying resources on Teleport start
* Always run playwright from OSS directory
* Copy session summaries over, adjusting end event/inference times
* Do not fix the viewport when browsing
* Fix bad rebase
* pnpm format
* Use a unique role per test, clean up after
* Make TableRow stable between renders
* Add stable key to DataTable
* Throw any tctl error that doesn't contain not found
Imports yassine's RBAC tests for navigation/visibility, recordings playback,
and role CRUD, alongside the supporting Recordings/Roles/SideNav/TrustedClusters
page objects. The recording fixture is renamed from a raw UUID to
ssh-recording-1 so test authors can reference it by a friendly name; consumers
on this branch declare it via `recordings: ['ssh-recording-1']` so the runner
seeds per-user copies through the bootstrap pipeline.
* Add metadata/thumbnail generation for desktop recordings
* Rename isPTYSession to metadataParamsForSessionEnd
* go mod tidy
* Disable the processor if RDP decoder is not available
* Reuse png.Encoder and buffer instead of creating new per screenshot
* Add clarifying comment about returning nil, nil when no decoder
* Add Windows desktop end events
* Set the session start time from end event if we don't already have it
* Break import cycle by extracting MFA JSON types to lib/client/mfatypes
* pnpm format
* go mod tidy all
* Remove flakey test that's covered through other paths
* Use a different interval for desktop sessions, make frames smaller than thumbnail
* Set correct flags when resuming mid-upload
* go.sum
* Handle desktop events in session post processor
* Add a semaphore to desktop recording processing
* Populate metadata from end event if start event not present
* Formatting
* Pass session start time to the metadata processor
* Reduce image sizes in tests
* Set default proxy target to localhost instead of IP
* Only rewrite origin if definitely needed
* Fix proxying when using an IP
* revert to http1
---------
Co-authored-by: avatus <[email protected]>
* Add user/role scanner and bootstrap library to e2e runner
* Clarify why missing files are non-fatal in scanFileUsers
* Warn if there are duplicate roles
* Trim test verbosity and tighten scan.go regex declarations
* Add access request information to enhanced summaries
* Add access request snapshots, move to separate file
* Add unspecified to access request status enum
* Newline
* Avoid a hard crash when WebAssembly is missing
* Simplify desktop client logic for WebAssembly check
* Replace dynamic import with a WebAssembly shim
* Move ImageAddon activation to avoid double loading
* pnpm format
* Add RDP state tracker for processing desktop recordings
* Guard against oversized screen dimensions
* Reset cursor state on resize
* Constrain screen dimensions to the same as we constrain RDP
* Move fastpath test helpers to separate package for reuse
* Remove mutex
* Do not use require in test module, fix linting issues
* Appease the linter
* Use DecodePermissive
* Avoid import cycle by inlining minimal message decoding in rdpstate
* Add length check to legacy fast path PDU
* t.Parallel()
* Add support for nested markdown lists
* Fix header content not parsing as markdown
* Add support for markdown tables
* Add max depth of 10 for parsing nested lists
* Only consume sibling list items with the same list marker
* Respect the start number on ordered lists
* Code review fixes
* Code review fixes
* Cap the max number of table columns to 100, rows to 1000
* Check max iterations before skipping blank lines
* Add session recordings to e2e runner
* teleport -> testenv
* Make session recordings start at midnight
* Add missing license
* Use the timezone of the machine
* go mod tidy
* Wait for audit log to exist before writing to it
* Seed recordings on the fly instead of using code generation
* Auto detect fixture usage in tests
* Changes to runner for enabling e e2e tests
* Only detect fixtures in test/UI/debug modes
* Make scanning more resilient - require test.use, allow for multiple lines
* Fix e2e/runner CI generate check
* Make scanning context aware to match with running individual tests
* Log enabled fixtures on one line
* Rename gen-fixtures, move go gen to main.go
* Return an error if no tests are matched
* gen-ts-fixtures: Use text/template instead of manually writing to buf
* Ignore generated fixtures.ts instead of formatting it
* Fix pnpm lockfile patching for when e/e2e is missing
* Simplify test running mode detection for scanning fixtures
* go generate
* Remove codegen from test run logic
* Handle run.sh receiving e/e2e directly
* Allow for fixtures to be enabled manually through flags
* Fix logging of enabled fixtures to include the ones set by flags
* Handle inline comments
* Update cmd in generated file
* Only pnpm install if teleport/connect needs building
* Error if UI mode is invoked with connect tests
* Handle errors better when checking if a binary exists
* Add info to the README about manually enabling fixtures
* Debug -> Warn
* Add test files to --ui
* Handle comments in strings properly
* Remove connect TSH from pnpm install logic
* Ignore flags in run.sh
* Handle double quotes just in case
* Add line number back
* Handle commented out imports
* Always include host.docker.internal in the certs
* Only scan fixtures in test mode/when test files are specified
* Make e2e/run.sh work with absolute paths to e/ tests
* Scan fixtures when running tests but not in UI mode
---------
Co-authored-by: Maja Cieślak <[email protected]>
* Return a nicer error when a session recording cannot be accessed
* Surface loading and playback errors in the recording player
* Remove test error
* Add comment about hasReceivedData
* Run E2E tests in CI
* Rename results JSON so upload-artifacts finds it
* Skip failing auth connector test
* Remove e2e's pnpm workspace, add it to root
* Use cache v5
* Change paths-filter checkout to only on merge group
* Add timeout to e2e tests job
* Only run build/test if there are changes
* Cache the pnpm store instead of node_modules
* Add rust-toolchain.toml to changed files detection
* Add rust-toolchain.toml and Makefile to Rust cache hash
* Add build.assets/Makefile to Rust cache too
* Expand the path filters to capture more changes
* Improve the build error reporting, upload failure logs as artifacts
* Add `contents:read` permission for checkout in merge_group/push triggers
* Cancel previous jobs on new push in a PR
* Move type checking to earlier to fail faster
* Use the correct glob syntax
* Remove redundant env var
* Validate playwright version before trying to get the container
* Use fetch-depth: 1 for faster checkouts
* Use bash for pipefail
* Add versions.mk to changes detection and Rust cache key
* Use bash for version checking
* Ensure build is successful before running tests
* Exit with code 1 if any build failed
* Remove redundant corepack enable
* Use exit $failed for consistency
* Exit as early as possible if e2e type-checking errors
* Remove pnpm store cache as pnpm install is fast enough
* Change playwright back to ^, remove validation, get version from installed
* Run playwright version getter in e2e dir
* Add nested Cargo.toml to paths filter
* Add --init to playwright container
* Add --ipc=host to playwright docker container
* stateRestoration.spec.ts: Limit number of `login` calls
This is to avoid running into auth rate limits when running the full
Connect test suite.
* Cleanup temp dir if `fs.cp` fails
* Remove typescript/node types from e2e package.json
* Move GitHub report to a separate step
* Add more pnpm stuff to paths filter
* Skip for dependabot PRs
* Add persist-credentials: false to checkout
* Move e2e binary building to a bash script
* Define the test results JSON path only once
* Move PR comment management to gh CLI calls instead of runner
* Add build-e2e-binaries.sh to paths filter
* Handle the possibility of a missing PR comment file
* Move PR comment posting to a separate job
* Always run the update-pr-comment job
* Print logs instead of uploading them
* Add the repo name to the concurrency group
* Up test timeout limit to 20s
* Add a SHA flag to the e2e report command
* Fix the GitHub comment not deleting on success
---------
Co-authored-by: Rafał Cieślak <[email protected]>
* Refactor recordingmetadata service to be able to support different session types
* Do not capture thumbnails on resize, correctly set thumbnail time/interval
* Fix inactivity offsets, improve the test
* Improve the session join event test
* Update ProcessSessionRecording in test
* Fix test
* Satisfy sloglint
* Fix tests
* Add command to download playwright report/results from GHA
* Add annotations and a comment on failures
* Merge tests, update formatting
* Be smarter about printing errors
* Use head SHA, paginate list artifacts
* Stream the artifacts instead
* Filter by bot comments only
* Clean up artifact after run
* Upgrade Vite to v8
* Remove crypto.randomUUID polyfill
* Remove tsconfigPathsPlugin from everywhere
* pnpm format
* Update electron vite config with new options
* Fix the loading of ace editor
* rollupOptions -> rolldownOptions in gen-event-reference-config
* Import makeEvent directly to avoid including frontend code
* Fix electron config
* pnpm format
* Ensure ace extensions load after ace is loaded
* pnpm format
* Change external dependencies to only apply to main/preload
* Remove unused eslint directive
* Only build teleport/tctl, skip if passed as flags, support e/
* Add support for running in different browsers
* Use a local build of teleport for the SSH node fixture
* Add a custom print summary to log results after execution finished
* Add typescript for type checking in CI
* Update mockWebAuthn to be browser agnostic
* Move the tctl invocation from Go to the test
* Save logs
* Allow for a custom docker host to be passed in
* Update playwright
* Run separate Teleport instances for each browser
* Give Connect its own Teleport instance
* Add custom dot reporter
* Add @gravitational/e2e/helpers path
* Use START_URL instead of INVITE_URL in connect login
* Always use custom dot reporter
* Always use blob reporter locally
* Only run connect if only connect tests are specified
* Do not run chromium if only running connect
* Silence the output from playwright report merging
* Ensure chromium Teleport instance doesn't start when running --browse-connect
* Log test files not projects if test files are specified
* Move from eslint to oxlint
* Run oxlint with the GitHub formatter in CI for PR annotations
* Bring back comments
* Add `--quiet` and report unused disable directives as errors
* Fix patterns for no-restricted-imports rules
* Configure no-unused-vars, remove unnecessary disables of it
The old version in ESLint was much more restrictive. The new config allows
things like dropping properties from an object with rest spread, see
web/packages/teleport/src/Roles/RoleEditor/StandardEditor/standardmodel.ts
for an example.
* Remove other unnecessary disable comments
* Remove duplicate `--quiet` flags
* Update link to jsx-no-useless-fragment docs
* Remove duplicate --quiet flag
* Prettier
* Move oxlint in package.json next to oxfmt
* Add the e2e eslint rules
* Scope e2e restricted imports to just the tests
* Split out the restricted imports for shared/ so they report correctly
* Also lint e2e directory
* Fix CI calling prettier instead of oxfmt
* Simplify pnpm format-check to use pnpm format with --check
---------
Co-authored-by: Rafał Cieślak <[email protected]>