Which DataModel the specs run in
data-model under [test.roblox-studio], or --studio-data-model for one
run, is run-server (the default) or edit.
[test.roblox-studio]data-model = "edit"run-serveris the server DataModel in Run mode. The physics simulation steps,RunService:IsRunning()is true, andRunService:IsClient()is false. The test place holds the specs and the modules they require.editis the edit DataModel, at command-bar permission, whererun-in-robloxruns specs.RunService:IsClient()is true, the Studio camera exists, nothing in the place starts by itself, physics does not step, andRenderSteppednever fires.
The specs in one session share that DataModel, as Files in one session says.
Your whole place, in edit
Section titled “Your whole place, in edit”With data-model = "edit" and rojo-project set, the test place is your whole
project, as Rojo builds it. A computed require, a module found by walking the
tree, and a model file all behave as they do under your own runner. A broken
require fails the test that reached it. Luau Run adds one
service for Jest and the script that runs the specs, and changes only your
project’s Jest globals module.
The whole place is only built for edit. In Run mode your project’s Scripts
would start, including any test runner it has.
If a file the project mounts changes, vanishes or appears while Rojo builds, the run is refused. Luau Run also refuses:
- a spec the project does not mount
- a project that mounts more than 10,000 files or 256 MiB
- two Instances of one name where Luau Run has to pick one, for a selected spec or your Jest globals module
Luau Run’s own folder, _LuauRun, goes under the first of TestService,
ServerStorage and ReplicatedFirst that your project does not declare. To
pick one yourself, set runner-service to one your project leaves free.
[test.roblox-studio]runner-service = "ServerStorage"In the whole place, .luaurc aliases such as @pkg/JestGlobals are not
followed, so a spec that requires through one fails. run-server follows them.
A relative string require in edit follows the place, not your files:
require("../../src/Thing") climbs from the spec’s Instance and looks for one
named src, so it fails when the Rojo project mounts src under another name.
© 2026 PRMS Developer