Skip to content

LTS-5442: add the Robot Framework sample tests and pin the Semgrep image - #2

Merged
SaranshBS merged 6 commits into
mainfrom
LTS-5442-playwright-robot-add-sample-code
Oct 30, 2026
Merged

SaranshBS merged 6 commits into
mainfrom
LTS-5442-playwright-robot-add-sample-code

Conversation

@MihirR-BS

@MihirR-BS MihirR-BS commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

This repo only held a README and the Semgrep workflow. The actual Playwright-Robot sample lives only in load-testing-backend as sample/sample-playwright-robot-repo.zip, added under LTS-2848. That means customers browsing the repo see no tests, and the LTS-5442 security review scanned an empty repo.

This PR adds the zip's five files unchanged (each byte-identical to the BE zip):

  • browserstack-load.yml
  • requirements.txt (robotframework==7.1.0, robotframework-browser==18.4.0)
  • resources/common.resource
  • tests/bstack_test_add_to_cart.robot
  • tests/bstack_test_checkout_flow.robot

Next step: rerun the security AI review against this branch, so LTS-5442 covers the real sample code. Any findings will be fixed here and mirrored back into the BE zip in load-testing-backend#3604.

This PR also carries the Semgrep digest pin that was #1, which is now closed in favour of this one.

Part of LTS-5442.

Security fixes (LTS-5442 rescan of this branch)

Story Fix
LTS-5660 requirements.txt is a hash-pinned lock generated by uv pip compile --universal --python-version 3.10 --generate-hashes. The direct dependencies are in requirements.in. All 12 wheels download in pip hash-checking mode for linux/py3.10, which is the pod's Python.
LTS-5661 browserstack-load.yml has error-percentage < 5% and p95 < 10 s BLU thresholds, with failOnBreach: false so a slow demo run reports the breach instead of aborting
LTS-5662 the checkout test asserts #confirmation-message = "Your Order has been successfully placed." (the same check the selenium serenity sample makes)
LTS-5663 the README warns that every VU logs in as the same demo user and says to use an account per VU against your own app
LTS-5664 access=public removed from .npmrc; min-release-age=7 added (matches the playwright and webdriverio samples, and clears Semgrep's npm-missing-minimum-release-age)
LTS-5546 .github/workflows/Semgrep.yml pulls returntocorp/semgrep:1.166.0@sha256:c180f0c93a17b420c0af5006214a29d3c747c5459c732b740191adf657dd0068 instead of the mutable 1.166.0 tag, the same pin as the other load-testing samples. The bundled BE zip doesn't include .github/, so this has no #3604 counterpart.

BE zip mirror: browserstack/load-testing-backend#3604.

🤖 Generated with Claude Code

The Playwright-Robot sample shipped in load-testing-backend
(sample/sample-playwright-robot-repo.zip, LTS-2848) was never pushed to
this repo, which only held a README and the Semgrep workflow. Add its
five files unchanged so the public sample matches what customers run and
the code can be reviewed and scanned here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MihirR-BS
MihirR-BS requested a review from a team as a code owner October 27, 2026 15:56
@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Central YAML (base), Organization UI (inherited), Workspace UI (inherited); Enforced overrides: Organization
  • Review profile: ASSERTIVE
  • Plan: Enterprise
  • Run ID: 98fcaf2e-7f7b-48b0-bf15-d993da06d050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

MihirR-BS and others added 2 commits October 27, 2026 22:18
…, checkout assertion, .npmrc, shared-account note)

- LTS-5660: requirements.txt is now a hash-pinned lock (uv, py3.10 universal);
  direct deps moved to requirements.in
- LTS-5661: browserstack-load.yml ships error-percentage and p95 thresholds
- LTS-5662: checkout test asserts the order confirmation message
- LTS-5663: README explains every VU shares the demo user
- LTS-5664: drop access=public from .npmrc

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The yml was copied from the backend's bundled zip, which uses the backend's
internal shape (loadTestName, framework: playwright-robot, loadProfileStages
with startVUs/targetVUs, "1m 30s" durations). browserstack-cli rejects those
keys. Use the CLI shape instead: testName, testType/framework/language per the
CLI's robot sample, loadProfile.stages with from/to, and no-space durations.

Verified with `browserstack-cli load run`: passed, both thresholds passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MohitSinghBS
MohitSinghBS previously approved these changes Oct 28, 2026
MihirR-BS and others added 2 commits October 28, 2026 15:53
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…release-age)

Matches the playwright and webdriverio samples: npm refuses package versions
published less than 7 days ago, which blunts freshly-hijacked releases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
LTS-5546: pull returntocorp/semgrep:1.166.0 by its immutable digest, the
same pin as the other load-testing samples. The Actions steps in this
workflow were already SHA-pinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MihirR-BS MihirR-BS changed the title LTS-5442: add the Robot Framework sample tests from the bundled zip LTS-5442: add the Robot Framework sample tests and pin the Semgrep image Oct 28, 2026
@SaranshBS
SaranshBS merged commit 7754b76 into main Oct 30, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants