Skip to main content
No Result Found
Connect and get help from 7,000+ developers on our Discord community. Ask the CommunityAsk the Community

Migrate LoadRunner scripts to k6

Convert OpenText LoadRunner VuGen scripts to k6 and run them as load tests on BrowserStack.

Convert your existing OpenText LoadRunner VuGen scripts into k6 JavaScript and run them as load tests on BrowserStack, without rewriting them from scratch. You upload a zip archive of your LoadRunner scripts, and BrowserStack uses AI to convert them to k6. You can then review, download, and run the converted scripts as load tests.

This guide is for performance engineers, DevOps engineers, and engineering managers who are moving from LoadRunner to BrowserStack Load Testing.

The tool supports Web/HTTP VuGen scripts only. See Limitations for the script types it does not yet handle.

Prerequisites

  • A BrowserStack account with Load Testing enabled.
  • An existing Load Testing project. If you don’t have one yet, create a project first.
  • One or more LoadRunner VuGen script folders exported as .zip files. Each script folder needs at least a .usr or .c file.
  • The migration feature enabled for your account. If you don’t see the migration option on the Load Tests page, contact your BrowserStack account team.

Migrate your scripts

To migrate your LoadRunner scripts and run them on BrowserStack, complete the following steps:

Prepare your LoadRunner archive

Package your LoadRunner scripts as a .zip file. You can upload either a single script zip (one VuGen script folder zipped up, for example checkout-flow.zip) or a batch zip (an outer .zip that contains one inner .zip per script) to convert multiple scripts in a single upload.

The maximum upload size is 500 MB.

You can export a VuGen script folder directly from LoadRunner’s VuGen IDE. Right-click the script in the Solution Explorer and choose Create Zip File. For batch uploads, place multiple script zips into a single folder and zip that folder.

BrowserStack Load Testing supports only Web/HTTP protocol scripts. The tool automatically detects and blocks scripts that use SAP, Citrix, Oracle, ODBC, RTE, MQTT, or other non-HTTP protocols during conversion. Decrypt encrypted scripts in VuGen before you upload them.

Upload your archive

  1. Open your project in BrowserStack Load Testing.
  2. Navigate to the Load Tests page.
  3. Click Import LoadRunner.
  4. In the tool selector, choose LoadRunner.
  5. Drag and drop your .zip file into the upload zone, or click to browse.
  6. The upload begins immediately. A progress indicator shows while the file transfers.

Load Tests page with the Import LoadRunner button and tool selector.

If your file exceeds 500 MB or is not a .zip, BrowserStack rejects the upload with an error message. Repackage your archive within the size limit and try again.

Wait for conversion

BrowserStack converts your scripts to k6. This usually takes a few minutes. You can close the browser and return later, because BrowserStack saves your migration automatically.

Review converted entities

When processing completes, you see a list of all discovered entities, with their conversion results. Each entity is one of your scripts.

Entity list with conversion status, script names, and action buttons.

The following table describes each entity status:

Status Meaning
Converted Fully converted to k6 and ready to create a load test.
Unsupported The script uses a non-HTTP protocol (such as SAP or Citrix) that BrowserStack cannot convert.
Failed Conversion failed, usually because of a malformed or incomplete script (for example, a missing Action.c).
Pending BrowserStack is still converting the script. Refresh the page to check progress.

For each entity, take the following action:

  • Converted: Click Download to get the k6 script, or continue to the next step to create a load test from it.
  • Unsupported or Failed: Review the error details. These scripts need manual conversion. See Troubleshooting.

Create a load test from a converted script

For each converted entity you want to run:

  1. Click Configure Load Test next to the entity. This opens the standard load test creation flow with the converted k6 script pre-attached.
  2. Enter a test name, for example checkout-flow-stress.
  3. Configure your load profile:
    • VUs (virtual users): the number of concurrent simulated users, for example 200.
    • Duration: how long the test runs, for example 15m.
    • Ramp-up: the time to reach the full VU count, for example 2m.
    • Regions: where to run from, for example us-east-1 or eu-central-1.
  4. Click Create.

Load test configuration form with VU count, duration, ramp-up, and region fields.

The entity is now linked to a load test in your project, and it appears in your Load Tests list like any other k6 test.

Converted scripts do not carry over LoadRunner scenario configurations such as Controller settings, VU schedules, and network settings. You configure these manually in the BrowserStack load test settings.

Run and verify

  1. Open the load test you just created from the Load Tests page.
  2. Click Run.
  3. Wait for the pods to provision. The status shows Provisioning for 1 to 2 minutes, and then switches to Running.
  4. When the test completes, open the Results tab to view response times, throughput, error rates, and VU metrics.

Test results dashboard with the response time graph, throughput, and error rate.

If the test fails or produces unexpected errors, check the Troubleshooting section. The most common cause is a flagged function that needs a manual adjustment in the k6 script.

Migration history

You can view all past migrations for your project:

  1. Navigate to the Load Tests page.
  2. Click Import LoadRunner.
  3. Your previous migrations appear in the History table, which shows the upload date, file name, total entities found, and counts for converted, failed, and unsupported scripts.
  4. Click any migration to drill into its entity list and resume where you left off.

Migration history table listing past imports with entity and status counts.

Troubleshooting

“Only Web/HTTP scripts supported”

Your archive contains a script that uses a non-HTTP protocol (SAP GUI, Citrix, RTE, MQTT, Oracle, ODBC, or custom plugins). The migration tool converts Web/HTTP VuGen scripts only. Remove the unsupported scripts from your archive, or convert them manually.

“Decrypt in VuGen before uploading”

LoadRunner scripts can be encrypted for source control, and the migration tool cannot read encrypted scripts. Open the script in VuGen, disable encryption, save it, re-export it as a zip, and upload again.

Entity shows “Failed” with “Incomplete script”

The script zip is missing a required file, usually Action.c. Check that your zip contains at least one .usr or .c file, and re-export from VuGen if needed.

Upload rejected because the file is too large

The maximum upload size is 500 MB. If your archive exceeds this limit, split it into multiple smaller uploads.

Converted script fails on first run

The most common cause is a data file issue. If your LoadRunner script used .dat files with complex CSV formatting, such as quoted fields or escaped commas, the converted data may need a manual correction.

Entity stuck in “Pending” state

Conversion occasionally takes longer for complex scripts. Refresh the page after a few minutes. If the status doesn’t change after 10 minutes, try uploading the script again as a separate single zip.

Limitations

Phase 1 of the migration tool has the following limitations:

Limitation Detail
Web/HTTP scripts only Non-HTTP protocols (SAP, Citrix, Oracle, ODBC, RTE, MQTT) are not supported.
No automatic configuration LoadRunner Controller scenario settings (VU schedules, network settings, runtime options) are not carried over. Configure these manually in BrowserStack.
No in-browser script editor You can download and review converted scripts, but you edit them locally. Re-upload the edited script as a standard k6 load test.
vuser_init and vuser_end not supported k6 does not provide per-VU setup and teardown hooks equivalent to LoadRunner’s vuser_init and vuser_end. This is a deliberate consequence of k6’s execution model, not a missing feature with a one-to-one substitute.

What’s next

After you migrate your scripts, explore the following:

We're sorry to hear that. Please share your feedback so we can do better

Contact our Support team for immediate help while we work on improving our docs.

We're continuously improving our docs. We'd love to know what you liked





Thank you for your valuable feedback

Is this page helping you?

Yes
No

We're sorry to hear that. Please share your feedback so we can do better

Contact our Support team for immediate help while we work on improving our docs.

We're continuously improving our docs. We'd love to know what you liked





Thank you for your valuable feedback!

Talk to an Expert
Download Copy Check Circle