{"en":{"app":{"name":"Rehearsal","errors":{"unexpected":"Something went wrong. Try again.","load-members":"Could not load members. Try again.","load-invitations":"Could not load invitations. Try again.","load-roles":"Could not load roles. Try again.","invalid-code":"Please enter a valid 6-digit code.","unknown":"An unknown error occurred. Please try again.","invalid-email":"Please enter a valid email address.","required":"Required","save-preference":"Failed to save preference. Please try again."},"logout":"Log out","roles":{"admin":"Admin","member":"Member","owner":"Owner"},"continue":"Continue","skip":"Skip","change":"Change","edit":"Edit","remove":"Remove","cancel":"Cancel","retry":"Try again","open-menu":"Open menu","login":"Log in","signup":"Sign up","legal":{"privacy":"Privacy Policy","terms-of-service":"Terms of Service"},"back":"Back","resend":"Resend","placeholders":{"email":"Enter your email"},"close":"Close","just-now":"just now","save":"Save","soon":"Soon"},"errors":{"generic":{"body":"Something got in the way. Try that again, or head back home.","eyebrow":"Unexpected","tab-title":"Error","title":"That didn't go to plan."},"not-found":{"body":"This page doesn't exist, or it moved, or it never did. Let's get you back to familiar ground.","eyebrow":"Off the map","tab-title":"Page not found","title":"You found the edge."},"server":{"body":"Something broke on our side. We're on it. Try again in a moment.","eyebrow":"Signal lost","tab-title":"Something broke","title":"We dropped this one."},"take-me-home":"Take me home"},"feedback":{"title":"Give feedback","report":"Report a problem","close":"Close","placeholder":{"workspace":"What would you like us to know?","result":"What looks wrong in this result?","test":"What looks wrong here?"},"heading":{"partly":"What did it miss?","no":"What did you expect instead?"},"category":{"problem":"Problem","idea":"Idea","other":"Other"},"with":"With this report: {items}","only-listed":"Only what is listed here is sent.","context":{"page":"Page","workspace":"Workspace","plan":"Plan","version":"Version","time":"Time","run":"Run","test":"Test","app":"App","chat":"Chat"},"add":{"recording":"Recording","screenshot":"Screenshot at the last step","screenshot-step":"Screenshot at step {number}","trace":"Trace"},"ask-reply":"Ask for a reply","reply-to":"Reply to {email}","send":"Send","sending":"Sending","retry":"Retry","sent":"Feedback sent","sent-reply":"We will reply to {email} soon.","send-error":"Could not send. Your message is still here.","verdict":{"question":"Did this check what you meant?","yes":"Yes","partly":"Partly","no":"No","answered":"You said this checked what you meant.","change":"Change","error":"Could not save your answer. Try again."}},"permission":{"forbidden":"You don't have permission to do that. Your access may have changed."},"connection":{"reconnecting":"Connection lost. Reconnecting..."},"auth":{"back-to-login":"Back to login","email-check":{"didnt-get-email":"Didn’t get the email?","enter-code-manually":"Enter code manually","resent":"Sent again.","subtitle":"We’ll email a link to verify this address {email}.","title":"Check your email"},"email-code":{"didnt-get-email":"Didn’t get the code?","errors":{"invalid-code":"Please enter a valid 6-digit code."},"placeholder":"Enter your 6-digit code","subtitle":"We've sent a 6-digit code to {email}.","title":"Enter the code"},"error":{"state-mismatch":"That sign-in attempt has expired or was already used. Please sign in again.","subtitle":"Something went wrong while signing you in, you can try again in just a moment.","title":"Oops, that didn’t work"},"logged-in-as":"Logged in as {email}","logged-in":{"subtitle":"You’re logged in in another tab, you can continue here or just close this tab.","title":"You’re logged in!"},"logout-failed":"Couldn’t log you out. Try again.","magic-link-send-failed":"We couldn’t send the email. Try again.","login":{"email":{"subtitle":"Enter your email to sign in to your account.","title":"Continue to Rehearsal"},"no-account":{"different-account":"Log in with a different account","footnote":"Nothing was created. We only checked for an existing account.","signup":"Sign up for Rehearsal","subtitle":"There’s no Rehearsal account for {email} yet. Would you like to create one?","title":"We couldn’t find your account"},"picker":{"account":"Don’t have an account? {signup}","email":"Log in with Email","google":"Log in with Google","google-unreachable":"Couldn’t reach Google sign-in. Check your connection and try again.","last-used":"Last used","passkey":"Sign in with a passkey","passkey-not-found":"No passkey found for your account. Try another sign-in method.","subtitle":"How do you want to log in?","title":"Welcome back"}},"signup":{"email":{"subtitle":"We’ll email a link to verify this address.","title":"What’s your email address?"},"existing-account":{"continue":"Continue with this account","different-account":"Sign up with a different account","footnote":"Signing up with a different account logs this one out first.","subtitle":"You’re signed in as {email}.","title":"You already have an account"},"picker":{"account":"Already have an account? {login}","agreement":"By creating an account, you agree to our {terms} and {dpa}.","email":"Register with Email","google":"Register with Google","legal-agreement-simple":"By creating an account, you agree to our {msa} and {privacy}.","subtitle":"How do you want to register?","title":"Let's get you set up"}}},"permissions":{"workspace":{"domain":"Workspace","billing-view":"View usage","billing-view-description":"See the plan and remaining test runs.","billing-manage":"Manage billing","billing-manage-description":"Change plans, payment details and additional spending.","roles-manage":"Manage roles","roles-manage-description":"Create, edit, and assign custom roles and permissions.","workspace-delete":"Delete workspace","workspace-delete-description":"Permanently delete the entire workspace.","workspace-manage-security":"Manage security","workspace-manage-security-description":"Configure authentication, sessions, and security policies.","workspace-update":"Edit workspace","workspace-update-description":"Change the workspace name, branding, and general settings.","workspace-view":"View workspace","workspace-view-description":"See the workspace and its general settings."},"members":{"domain":"Members and teams","members-invite":"Invite members","members-invite-description":"Send invitations to add new people to the workspace.","members-remove":"Remove members","members-remove-description":"Remove people from the workspace.","members-update-role":"Change member roles","members-update-role-description":"Assign roles and change what other members can do.","members-view":"View members","members-view-description":"See who belongs to the workspace."},"projects":{"domain":"Projects","projects-read":"View projects","projects-read-description":"View projects and their apps.","projects-manage":"Manage projects","projects-manage-description":"Add, update and remove projects and their apps."},"integrations":{"domain":"Integrations","integrations-manage":"Manage integrations","integrations-manage-description":"Connect GitHub and decide when tests run."},"ai":{"domain":"Agent","ai-use-agent":"Use the agent","ai-use-agent-description":"Chat with the Rehearsal agent about this workspace."}},"account":{"back":"Back","title":"Account","profile":{"description":"Your personal information visible to others.","title":"Profile","avatar":"Avatar","avatar-hint":"Recommended size: 256x256px","name-placeholder":"Alex Johnson","name":"Full name","display-name-placeholder":"e.g., Alex","display-name":"What should Rehearsal call you?","email-hint":"Contact support to change your email.","email":"Email","avatar-error":"Failed to upload avatar"},"workspaces":{"description":"Workspaces you are a member of.","title":"Your Workspaces","open":"Open","empty":{"title":"No Workspaces","description":"You are not a member of any workspaces yet.","create":"Create Workspace"}},"passkeys":{"name-placeholder":"e.g. MacBook Touch ID","errors":{"already-registered":"This authenticator is already registered. Please use a different one.","registration-failed":"Failed to register passkey. Please try again.","last-passkey-required":"Your workspace requires at least one passkey.","delete-failed":"Failed to delete passkey."},"description":"Secure your account with biometric authentication.","title":"Passkeys","unavailable":"Passkeys couldn't be loaded.","retry":"Try again","empty-title":"No passkeys","empty-description":"Add a passkey to sign in with biometrics.","default-name":"Passkey","synced":"Synced across your devices","device-only":"Saved on one device","required":"Required","delete":"Delete","add":"New passkey","delete-confirm":"Delete","delete-confirm-description":"This passkey will no longer be usable for sign-in.","delete-confirm-title":"Delete passkey?","created":"Added {date}","count":"{count} passkey | {count} passkeys","add-dialog":{"name-title":"Name your passkey","description":"Name this passkey so you can identify it later."},"name-label":"Passkey name"},"security":{"description":"Manage your active login sessions.","title":"Sessions","unavailable":"Sessions couldn't be loaded.","retry":"Try again","location-unknown":"Location unknown","signed-in":"Signed in {date}","expires":"Expires {date}","this-device":"This device","sign-out":"Sign out","only-this-device":"You're only signed in on this device.","other-devices":"{count} other device signed in | {count} other devices signed in","sign-out-all":"Sign out all other devices","keep-signed-in":"Keep signed in","sign-out-confirm-title":"Sign out this device?","sign-out-all-confirm":"Sign out all","sign-out-all-confirm-description":"Every device except this one will be signed out immediately.","sign-out-all-confirm-title":"Sign out all other devices?","unknown-device":"Unknown device","sign-out-confirm-description":"{device} will be signed out immediately and will need to sign in again.","sign-out-error":"Couldn't sign out that device.","sign-out-all-error":"Couldn't sign out the other devices."}},"projects":{"title":"Projects","empty":"No projects yet","empty-description":"Add a project to start checking your app.","name":"Project name","name-placeholder":"My app","url-placeholder":"https://example.com","url-invalid":"Enter a valid HTTP or HTTPS URL.","environment":"Environment","environments":{"production":"Production","preview":"Preview","staging":"Staging","local":"Local"},"load-error":"Could not load projects. Try again.","name-too-long":"Use 100 characters or fewer.","subtitle":"Pick a project to see its tests and runs.","new-project":"New project","new-project-hint":"Web apps today. Mobile coming soon.","empty-projects":"No projects yet","empty-projects-description":"A project is one app. Give it the address people use and Rehearsal takes it from there.","open-project":"Open {name}","opening":"Opening the project","test-count":"{count} test | {count} tests","test-count-capped":"{count}+ tests","environment-count":"{count} environment | {count} environments","not-run-yet":"Not run yet","last-run-meta":"#{number} · {when}","last-run":{"queued":"Queued","running":"Running","passed":"Passed","failed":"Failed","blocked":"Blocked","cancelled":"Cancelled"},"new":"New project","new-description":"Start from one address. You can add more later.","address":"Address","name-optional":"Project name, optional","name-hint":"Leave it empty and the project is called {host}.","new-error":"Could not create the project. Try again."},"settings":{"title":"Settings","danger-zone":{"description":"Irreversible and destructive actions.","title":"Danger zone","delete-description":"Permanently delete this workspace and all its data.","delete":"Delete workspace","delete-dialog":{"title":"Delete workspace","description":"This removes every project, test and run in the workspace. It cannot be undone.","confirm-prompt":"Type the following to permanently delete:"},"delete-error":"The workspace could not be deleted. Try again."},"name-and-visuals":{"description":"Manage your workspace identity, branding, and preferences.","title":"Name & visuals","workspace-details":{"description":"Manage your workspace identity and branding.","title":"Workspace details"},"name":{"description":"The display name for your workspace.","title":"Workspace name","change-dialog":{"title":"Change workspace name","description":"Change the name your team sees.","name-label":"New name","error":"Failed to update workspace name.","placeholder":"My workspace"}},"logo":{"title":"Workspace logo","description":"Recommended size: 256x256px","upload-error":"Failed to upload logo"},"color":{"description":"Shown across your workspace, including the sidebar tint and live chat.","title":"Brand color"},"url":{"description":"Your unique workspace identifier.","title":"Workspace URL","coming-soon":"Coming soon"},"timezone":{"description":"Billing dates and emails use this time zone.","title":"Time zone","save-error":"The time zone could not be saved. Try again."}},"interface":{"description":"Customize the look and feel of your workspace.","title":"Interface and theme","theme":{"description":"Select your preferred color scheme","title":"Interface theme","system":"System","light":"Light","dark":"Dark"},"font-size":{"description":"Adjust the size of text across the app","title":"Font size","small":"Small","default":"Default","large":"Large"},"pointer-cursors":{"description":"Change the cursor to a pointer when hovering over any interactive elements","title":"Use pointer cursors"}},"security":{"description":"Configure security policies for your workspace.","title":"Security","passkeys-description":"Require members to use passkeys for secure access.","passkeys-title":"Passkey Authentication","require-passkeys-description":"All members must register a passkey to access this workspace.","require-passkeys":"Require passkeys","confirm-enable":"Enable","confirm-enable-description":"This will require all members to register a passkey. Members without one will be prompted on their next visit.","confirm-enable-title":"Require passkeys?","update-error":"Failed to update security settings."},"save-state":{"error":"Failed to save","saved":"Saved","saving":"Saving..."},"revert":"Revert","sidebar":{"search-placeholder":"Search settings...","results":"Results","no-results":"No settings found","group-workspace":"Workspace","name-and-visuals":"Name & visuals","security":"Security","danger-zone":"Danger zone","group-project":"Project","repository":"Repository","group-members":"Members","members":"Members","invites":"Invites","roles":"Roles & permissions","apps":"Addresses"},"repository":{"title":"Repository","description":"The GitHub repository this project checks.","load-error":"Could not load the connection. Try again.","connected":{"title":"Connected repository","description":"Rules run on this repository. It covers the whole project."},"reads":{"title":"Rehearsal can read","description":"Rehearsal does not read your code.","details":"Repository details","deployments":"Deployments","pull-requests":"Pull requests","checks":"Checks Rehearsal writes"},"disconnect":{"title":"Disconnect","description":"Rules are removed. Runs that already finished keep their results.","action":"Disconnect","confirm-title":"Disconnect this repository?","confirm":"Rules are removed. Runs that already finished keep their results.","error":"Could not disconnect. Try again."},"not-connected":{"title":"No repository yet","description":"Connect GitHub to check the app you ship."},"installed":{"title":"GitHub account","description":"Rehearsal is installed here."}},"sections":"Settings sections","apps":{"title":"Addresses","description":"Every address this project tests. A test runs on one of them.","count":"{count} address | {count} addresses","count-in-apps":"{addresses} addresses in {apps} apps","search":"Search addresses","all-environments":"All environments","columns":{"address":"Address","app":"App","environment":"Environment"},"paste":"Paste an address","add":"Add","add-error":"Could not add the address. Check it and try again.","row-menu":"Address options","name-app":"Name this app","rename-app":"Rename app","name-description":"A name tells this app apart from the others.","name-hint":"Leave it empty and the app stays known as {host}.","name-error":"Could not save the name. Try again.","remove-address":"Remove address","remove-error":"Could not remove the address. Try again.","local-connection":"Local connection","refresh-connections":"Refresh status","disconnect-local":"Disconnect","retry-disconnect":"Retry disconnect","disconnect-error":"Could not disconnect this address. Try again.","close-unconfirmed":"Access was revoked. Could not confirm the connection closed.","local-unavailable":"Local connections are unavailable right now.","connection-status":{"connected":"Connected","closing":"Closing","offline":"Offline","expired":"Expired","revoked":"Access revoked","unavailable":"Status unavailable"},"no-matches":"No addresses match your search.","empty":"No addresses yet. Paste one to start."}},"workspace":{"sidebar":{"keyboard-shortcuts":"Keyboard shortcuts","account":"Account","settings":"Settings","toggle":"Toggle sidebar","platform":"Platform","help":"Help","help-unavailable":"Help chat is not available right now. Try again in a moment.","give-feedback":"Give feedback"},"access-denied":{"title":"You don't have access to this workspace","description":"You aren't a member of this workspace. Ask an admin to invite you, or switch to a workspace you have access to.","switch-workspace":"Go to my workspaces"},"members":{"list":{"description":"Manage your team members and their roles.","title":"Workspace Members","invite-members":"Invite someone","table":{"member":"Member","role":"Role","joined":"Joined"},"passkey-missing":"No passkey registered","actions":{"edit-role":"Edit role","remove":"Remove member"},"remove-dialog":{"title":"Remove Member","description":"Are you sure you want to remove {name} from this workspace? They will lose access to all workspace resources.","confirm":"Remove Member"},"toast":{"remove-error":"Failed to remove member","role-update-error":"Failed to update member role"},"edit-role-dialog":{"title":"Edit Member Role","description":"Change the role for {name}.","current":"Current","admin-description":"Full access and settings management","member-description":"Can view and collaborate","custom-roles-heading":"Custom roles","custom-role-tier-admin":"Custom role with admin-level access","custom-role-tier-member":"Custom role with member-level access"}},"invites":{"description":"Manage pending invitations to your workspace.","title":"Pending Invitations","send-invite":"Invite someone","status":{"accepted":"Accepted","declined":"Declined","expired":"Expired","pending":"Pending","revoked":"Revoked"},"row-sent":"Sent {date}","row-expires":"Expires {date}","actions":{"revoke":"Revoke invite"},"welcome":{"invite-someone":"Invite your first teammate","wizard-hint":"You can revoke an invite anytime before it's accepted.","title":"It's easy to grow your team","step-1-title":"Add email addresses","step-1-description":"Type or paste your teammates' addresses, as many as you like.","step-2-title":"Pick a role","step-2-description":"Members handle conversations. Admins also manage settings and members.","step-3-title":"They join your workspace","step-3-description":"One click on the email link and they're in. Invites expire after 7 days."},"revoke-dialog":{"title":"Revoke Invitation","description":"Are you sure you want to revoke the invitation for {email}? They will no longer be able to join using this invitation.","confirm":"Revoke Invite"},"toast":{"revoke-error":"Failed to revoke invitation","send-error":"Failed to send invitations"},"dialog":{"title":"Invite Team Members","description":"Send invitations to add new members to your workspace.","emails-label":"Email addresses","remove-email":"Remove {email}","email-placeholder":"colleague{'@'}company.com","email-hint":"Separate multiple addresses with Enter or a comma, or paste a whole list.","role-label":"Invite as","expiry-hint":"Invites expire after 7 days.","send-button":"Send {count} Invite | Send {count} Invites","invalid-email":"That doesn't look like a valid email address.","already-in-list":"{email} is already in your list.","already-invited":"{email} already has an invite waiting.","already-member":"{email} is already a member.","member-description":"Can view and collaborate","admin-description":"Full access and settings"}}},"roles":{"subtitle":"Control what each role can do in this workspace.","title":"Roles and permissions","new-role":"New role","built-in-section":"Built-in roles","role-name":{"admin":"Admin","member":"Member","owner":"Owner"},"badge":{"owner":"Owner","built-in":"Built-in","custom":"Custom"},"member-count":"No members | {count} member | {count} members","full-access":"Full access","read-only-badge":"Read only","custom-section":"Custom roles","duplicate":"Duplicate","delete":"Delete","reset":"Reset to default","detail":{"not-found":"This role no longer exists.","go-back":"Back to roles"},"editor":{"name-label":"Role name","name-placeholder":"Support agent","description-label":"Description","description-placeholder":"What this role is for","permissions-heading":"Permissions","selected-count":"{count} selected","group-count":"{on} of {total}","tier-hint":{"admin":"Admin default","member":"Member default","owner":"Owner only"}},"edit":"Edit role","reset-dialog":{"title":"Reset to default?","description":"This restores the role's permissions to the built-in default. Any changes you made will be lost.","confirm":"Reset to default"},"cancel":"Cancel","reassign-dialog":{"target-label":"Move members to","target-placeholder":"Pick a role","target-builtin":"Their base tier","title":"Reassign members","description":"This role is assigned to members. Choose where to move them before deleting it.","confirm":"Reassign and delete"},"delete-dialog":{"title":"Delete role?","description":"This permanently deletes the role. This can't be undone.","confirm":"Delete role"},"permission-count":"{count} of {total} permissions","welcome":{"create-role":"Create your first custom role","wizard-hint":"Built-in roles cover most teams. Add a custom one when you need something in between.","title":"It's easy to tailor access with custom roles","step-1-title":"Start from a preset","step-1-description":"Pick a starting point like Support agent or Read only, instead of toggling every permission yourself.","step-2-title":"Fine-tune permissions","step-2-description":"Choose what this role can view and change.","step-3-title":"Assign it to members","step-3-description":"Give people the role from the Members page to grant exactly that access."},"duplicate-dialog":{"title":"Duplicate role","description":"Create a copy of this role that you can edit independently.","name-label":"New role name","name-placeholder":"Copy of role","submit":"Duplicate role"},"create-dialog":{"title":"Create a role","description":"Name it and pick a starting point. You'll fine-tune permissions next.","name-label":"Role name","name-placeholder":"Support agent","submit":"Create role"},"preset":{"blank":"Blank","blank-description":"Start with the base tier and add permissions yourself.","label":"Start from a preset","permission-count":"{count} permission | {count} permissions","read-only":"Read only","read-only-description":"Can view conversations and content without making changes.","member":"Member","member-description":"View projects and workspace members.","admin":"Admin","admin-description":"Manage projects and workspace settings."},"toast":{"create-failed":"Couldn't create the role. Please try again.","update-failed":"Couldn't save the role. Please try again.","reset-failed":"Couldn't reset the role. Please try again.","delete-failed":"Couldn't delete the role. Please try again.","duplicate-failed":"Couldn't duplicate the role. Please try again."}}},"tests":{"title":"Tests","empty":"No tests yet","empty-description":"Tell Re:agent what to check and it writes the first test.","new-test":"New test","load-error":"Could not load tests. Try again.","search":"Search tests","count":"No tests | 1 test | {count} tests","clear-filters":"Clear filters","no-matches":"No tests match these filters","no-matches-description":"Change a filter or clear them all.","no-suite-empty":"Every test is in a suite","no-suite-empty-description":"A test you take out of every suite appears here.","views":{"all":"All tests","no-suite":"Not in a suite","no-suite-description":"Tests that no suite runs."},"filters":{"readiness":"Readiness","any-readiness":"Any readiness","result":"Result","any-result":"Any result","never-run":"Never run"},"columns":{"test":"Test","environment":"Environment","readiness":"Readiness","latest-result":"Latest result","last-runs":"Last {count} runs","app":"App"},"latest-run":"Run #{number}, {when}","never-run":"Never run","menu":{"label":"Actions for {name}","add-to-suite":"Add to suite"},"run":{"action":"Run test","error":"Could not start the run. Try again.","refused-named":"{name} cannot run at this address."},"run-destination":{"title":"Choose where to run","description":"Run saved tests on an environment of the same app.","label":"Environment","placeholder":"Choose an environment","no-environments":"This test has no available environment in its app.","action":"Start run"},"edit-in-chat":"Edit in chat","detail":{"runs-on":"Saved from {environment}","suites":"Suites","no-suites":"Not in a suite","what-it-does":"What this test does","what-happened":"What happened","no-runs":"This test has not run yet."},"selection":{"count":"1 test selected | {count} tests selected","select":"Select {name}","select-all":"Select every test on this page","add":"Add to suite","add-to":"Add 1 test to | Add {count} tests to","one-website-run":"Pick tests at one address. A run checks one address.","run":"Run selected","run-note":"Run selected puts 1 test in one run. | Run selected puts {count} tests in one run.","none-ready":"None of these tests can run yet.","some-not-ready":"1 test is not ready, so it ends blocked. | {count} tests are not ready, so they end blocked.","add-error":"Could not add the tests. Try again.","clear":"Clear"},"state":{"draft":"Draft","approved":"Approved","needs-update":"Needs update","archived":"Archived"},"strip":{"label":"The newest runs of this test","square":"Run #{number} · {date} · {status}"},"missing":"Test not found","missing-description":"This test was removed or belongs to another project.","back-to-tests":"Back to tests","recent":{"title":"Recent results","all":"All results","empty":"No results yet."},"chart":{"title-all":"Every result","title-newest":"Results in the newest {count} runs","title-runs":"Run history | Results in the newest run | Results in the newest {count} runs","legend":"Height is how long the test took. Colour is the result.","runs-legend":"Height is how long the run took. Colour is the result.","failing-since":"Failing since {since}.","failing-since-after":"Failing since {since}, after passing once. | Failing since {since}, after passing {count} times in a row.","passing-for":"Passing for the last {count} runs.","no-results":"This test has not run yet.","few-results":"1 result so far. The chart starts at {minimum}. | {count} results so far. The chart starts at {minimum}.","no-runs":"Nothing has run yet.","few-runs":"1 run so far. The chart starts at {minimum}. | {count} runs so far. The chart starts at {minimum}."},"days-ago":"Today | Yesterday | {count} days ago","today":"Today","unknown-environment":"Unknown environment"},"suites":{"title":"Suites","load-error":"Could not load suites. Try again.","missing":"Suite not found","missing-description":"This suite was removed or belongs to another project.","name-taken":"That name is already used in this project.","refused":"That test cannot be added to this suite.","refused-named":"{name} cannot be added to this suite.","run":"Run suite","run-in-progress":"Run #{number} is still going. It keeps the tests it started with, so changes apply to the next run.","not-ready-notice":"1 test is not ready, so a run of this suite ends blocked. Fix it or remove it from the suite. | {count} tests are not ready, so a run of this suite ends blocked. Fix them or remove them from the suite.","readiness":{"empty":"No tests yet.","all-ready":"1 test, ready. | {count} tests, all ready.","some-ready":"{total} tests, {ready} ready. It ends blocked until 1 is fixed. | {total} tests, {ready} ready. It ends blocked until {count} are fixed.","ready":"Ready","draft":"Draft","needs-update":"Needs update","archived":"Archived","not-validated":"Not verified"},"reasons":{"ready":"Ready to run.","draft":"Not approved yet.","needs-update":"The page changed and nobody has accepted it yet.","archived":"This test was archived.","not-validated":"Nothing has proved this test works yet."},"new":{"title":"New suite","description":"A suite is a group of tests you run together.","name-label":"Name","name-placeholder":"Release smoke tests","name-required":"Enter a name.","name-too-long":"Use 100 characters or fewer.","description-label":"Description","description-placeholder":"What this suite covers.","description-too-long":"Use 500 characters or fewer.","submit":"New suite","error":"Could not create the suite. Try again."},"rename":{"action":"Rename","title":"Rename this suite","description":"This name appears wherever the suite does.","error":"Could not save the name. Try again."},"members":{"title":"Tests in this suite","count":"{count} of {total} tests","add":"Add tests","empty":"No tests in this suite yet.","remove":"Remove {name}","remove-note":"Removing a test here keeps it in the project.","remove-error":"Could not remove the test. Try again."},"picker":{"title":"Add tests","description":"Every test in this project.","search":"Search tests","chosen":"Nothing picked | 1 test picked | {count} tests picked","none":"No tests in this project yet.","no-match":"No tests match this search.","error":"Could not save the tests. Try again."},"remove":{"title":"Remove this suite","description":"Runs it started keep their results.","action":"Remove suite","confirm-title":"Remove this suite?","confirm":"Runs it started keep their results. The tests stay where they are.","error":"Could not remove the suite. Try again."}},"setup-passkey":{"title":"Almost there","subtitle":"Your workspace uses passkeys for sign-in.","description":"Passkeys use your fingerprint, face, or device lock. No passwords to remember, it only takes a few seconds.","action":"Create passkey","name-title":"Passkey created","name-description":"Give it a name so you can identify it later.","save-continue":"Save & continue"},"runs":{"title":"Runs","subtitle":"Each row is one request to run tests. It can cover one test, a suite or all of them.","search":"Search runs","count":"No runs | 1 run | {count} runs","clear-filters":"Clear filters","capped":"Showing the newest {count} runs.","time-note":"Time in tests is the time the tests spent running.","open-run":"Open run {number}","load-error":"Could not load runs. Try again.","empty":"No runs on {environment} yet","empty-description":"A run is one request to run tests. Start one from a test or a suite.","empty-action":"Open tests","no-matches":"No runs match these filters","no-matches-description":"Change a filter or clear them all.","columns":{"run":"Run","what-ran":"What ran","result":"Result","tests":"Tests","started-by":"Started by","duration":"Time in tests","when":"When"},"selection":{"all-tests":"All tests","one-test":"One test"},"source":{"manual":"By hand","github":"GitHub check","rerun":"Rerun","validation":"Approval check","pull-request":"Pull request #{number}"},"filters":{"suite":"Suite","any-suite":"Any suite","result":"Result","any-result":"Any result","source":"Started by","any-source":"Started by anyone","test":"Test","clear-test":"Show every run"},"tests":{"not-started":"Not started","finished":"Nothing finished yet | 1 test finished | {count} tests finished","ran":"None ran | 1 test ran | {count} tests ran","passed":"{passed} of {total} passed"}},"onboarding":{"profile":{"title":"What's your name?","name-placeholder":"Full name","display-name-placeholder":"Preferred name","errors":{"name-too-long":"Use 100 characters or fewer.","display-name-too-long":"Use 50 characters or fewer.","failed":"Could not save your name. Try again."}},"workspace":{"title":"Name your workspace","name-placeholder":"Workspace name","url-placeholder":"Workspace URL","errors":{"required":"Enter a workspace name.","too-long":"Use 100 characters or fewer.","url-min-length":"Use at least 3 characters.","url-max-length":"Use 50 characters or fewer.","url-invalid":"Use lowercase letters, numbers and hyphens.","url-taken":"That address is taken. Try another.","url-unavailable":"That address is not available. Try another.","failed":"Could not save the workspace. Try again."}},"welcome":{"title":"Welcome to Rehearsal","subtitle":"Your AI testing team is ready for your next release.","submit":"Get started"},"app":{"title":"Let's test your app","subtitle":"Enter your app's address to start your first test.","label":"App address","placeholder":"app.example.com","errors":{"required":"Enter an address.","invalid":"That is not a web address.","out-of-reach":"Rehearsal runs its browsers in the cloud, so localhost is out of reach.","out-of-reach-hint":"Give an address your teammates can open.","failed":"We could not save that address."}},"reagent":{"title":"Meet Re:agent","subtitle":"Your AI teammate for testing what matters, release after release.","submit":"Create my first test","abilities":{"explores-app":{"title":"Explores your app","description":"Follows your customer journeys in a real browser."},"creates-tests":{"title":"Creates your tests","description":"Turns those journeys into tests you can run again."},"checks-work":{"title":"Checks its work","description":"Replays each test, with a recording you can review."}},"errors":{"failed":"Could not create your first test."}},"first-test":{"task":"Check that {host} loads."},"login":{"errors":{"name-max-length":"Use fewer than 100 characters.","display-name-max-length":"Use fewer than 100 characters."}}},"shortcuts":{"cheat-sheet":{"description":"Keyboard shortcuts for moving around your workspace.","no-results":"No shortcuts found","search-placeholder":"Search shortcuts...","title":"Keyboard Shortcuts","toggle":"Show keyboard shortcuts"},"command-palette":"Open command palette","dismiss":"Dismiss","go-settings":"Go to settings","groups":{"general":"General","navigation":"Navigation","composer":"Composer"},"search":"Search","go-projects":"Go to Projects","go-tests":"Go to Tests","go-runs":"Go to Runs","then":"then","composer-dictation":"Transcribe my speech","agent-composer-queue":"Keep a message back until the reply ends","agent-composer-steer":"Send a message into the reply being written","go-agent":"Go to Agent","go-deployments":"Go to Deployments","go-usage":"Go to Usage"},"invites":{"email-mismatch":{"title":"Email Mismatch","description":"This invitation was sent to {inviteEmail}, but you’re signed in as {userEmail}.","alert":"Please sign in with the correct email address to accept this invitation.","switch-account":"Switch Account","cancel":"Cancel"},"invalid":{"open-workspace":"Open Workspace","request-new":"Request a New Invite","go-home":"Go to Home"},"profile-setup":{"title":"Set Up Your Profile","description":"You’ve joined {workspaceName}. Complete your profile to get started.","name-placeholder":"Full name","display-name-placeholder":"Display name","continue":"Continue to Workspace"},"confirm":{"title":"Join {workspaceName}","description":"{inviterName} has invited you to join as {roleLabel}.","workspace":"Workspace","role":"Your Role","invited-by":"Invited by","accepting":"Joining...","accept":"Accept Invitation","declining":"Declining...","decline":"Decline"},"success":{"title":"Welcome to {workspaceName}!","description":"You’ve successfully joined the workspace.","open-workspace":"Open Workspace"},"already-member":{"title":"You’re Already a Member","description":"You’re already a member of {workspaceName}.","open-workspace":"Open Workspace"},"not-authenticated":{"title":"You’re Invited!","description":"{inviterName} has invited you to join {workspaceName} as {roleLabel}.","alert":"Sign in with {email} to accept this invitation.","sign-in":"Sign In to Continue","create-account":"Create an Account"},"error":{"title":"Invalid Invitation","description":"This invitation link is invalid or has been removed.","go-home":"Go to Home"},"loading":{"title":"Verifying invitation..."},"roles":{"admin":"an Admin","member":"a Member"}},"common":{"timezone-select":{"search-placeholder":"Search timezones...","empty":"No timezone found.","placeholder":"Select timezone"}},"command-palette":{"description":"Find a page in your workspace.","placeholder":"Go to a page...","no-results":"No pages found.","go-to":"Go to {page}","footer":{"navigate":"Navigate","select":"Select","close":"Close"}},"cheat-sheet":{"toggle":"Show keyboard shortcuts"},"color-picker":{"preset-name":{"blue":"Blue","cyan":"Cyan","emerald":"Emerald","gray":"Gray","orange":"Orange","pink":"Pink","red":"Red","violet":"Violet","yellow":"Yellow"},"custom":"Custom","presets":"Presets"},"uploads":{"invalid-image":"Choose a JPEG, PNG, GIF or WebP image.","image-too-large":"Choose an image smaller than 5 MB.","failed":"Could not upload the image. Try again."},"agent":{"composer":{"placeholder":"Ask Re:agent what to check","attach":"Attach files","dictate":"Transcribe my speech","send":"Send","stop":"Stop","expand":"Expand","collapse":"Collapse","thread-failed":"Could not start the chat. Try again.","disabled-hint":"Not available yet"},"title":"Re:agent","page":{"greeting":"What should Rehearsal check?","intro":"Describe a flow on your site. Rehearsal opens it in a browser and turns it into a test.","expand-threads":"Show chats","load-error":"Could not load this chat. Try again."},"threads":{"new-thread":"New chat","untitled":"New chat","empty":"No chats yet","empty-description":"Start a chat and it shows up here.","menu":"Chat options","rename":"Rename","pin":"Pin","unpin":"Unpin","delete":"Delete","rename-hint":"Click to rename","rename-title":"Rename chat","rename-description":"Give this chat a name you will recognise.","title-label":"Chat title","title-placeholder":"Chat title","title-required":"Enter a title.","title-too-long":"Use 120 characters or fewer.","rename-error":"Could not rename the chat. Try again.","delete-title":"Delete this chat?","delete-description":"The messages in it are removed.","delete-error":"Could not delete the chat. Try again.","status-working":"Working","status-failed":"Reply failed","status-done":"Finished","status-idle":"Nothing new","groups":{"today":"Today","yesterday":"Yesterday","past-week":"Previous 7 days","past-month":"Previous 30 days","older":"Older"},"suggestion-loading":"Writing a suggestion","suggestion-use":"Use it"},"messages":{"error-title":"Rehearsal could not finish that.","error-body":"Your message is still here. Try again.","retrying":"Trying again","stopped":"Stopped","good-reply":"Good reply","bad-reply":"Bad reply","feedback-error":"Could not save your rating. Try again.","copy":"Copy","copied":"Copied","send-error":"Could not send the message. Try again.","stop-error":"Could not stop the reply. Try again.","feedback":{"question":"What was off about my reply?","reason":{"wrong_information":"Wrong information","did_wrong_thing":"Did the wrong thing","missed_step":"Missed a step","other":"Other"},"note-placeholder":"Tell me more (optional)","share-steps-one":"The 1 step of this turn","share-steps-many":"The {count} steps of this turn","share-before-one":"The 1 message before it","share-before-many":"The {count} messages before it","with":"With this rating: this reply, the chat it is in, your workspace, time","only-listed":"Only what is listed here is sent. The rest of the chat stays in the workspace.","send":"Send","close":"Close","saved":"You said: {reason}","change":"Change","remove":"Remove","save-error":"Could not save that. Try again."}},"resources":{"title":"Re:agent uses","remove":"Remove","accounts":{"title":"Test accounts","description":"Re:agent signs in with these on this project.","empty":"No accounts yet","empty-description":"Add an account and Re:agent can sign in to your site.","no-project":"Pick a project to see its accounts.","add":"Add account","add-error":"Could not add the account. Try again.","kind-label":"Kind","kind":{"password":"Password","inbox":"Email sign-in","fresh":"New account each run"},"kind-hint":{"password":"Signs in with an email and a password you give.","inbox":"Gets its own address here and signs in with the link or code sent to it.","fresh":"Signs up with a new address every run."},"label":"Name","label-placeholder":"admin","label-hint":"What you call this account. It has to be unique in this workspace.","label-required":"Enter a name.","label-too-long":"Use 40 characters or fewer.","email":"Email","email-placeholder":"qa{'@'}example.com","email-invalid":"Enter a valid email address.","password":"Password","password-placeholder":"Type the password","password-required":"Enter a password.","password-road":"A password is saved here, encrypted. It never goes in the chat.","address":"Address name","address-hint":"Rehearsal creates the address with the account. Renaming the account later does not change it.","address-hint-fresh":"A new address every run, built from this name.","fresh-hint":"For sign-up flows that send a code or a link. Sign-up with a password comes later.","sites":"Where it works","sites-hint":"Pick every site it can sign in to. A new site is not covered until you add it here.","sites-required":"Pick at least one site.","description-label":"Description","description-placeholder":"What this account is and what it can do","description-hint":"Re:agent reads this when it picks an account.","description-too-long":"Use 500 characters or fewer.","copy-address":"Copy the address","show-messages":"Show the messages","hide-messages":"Hide the messages","messages-title":"Last messages received","messages-empty":"No messages yet.","messages-loading":"Reading the mailbox.","messages-error":"Could not read the mailbox. Try again.","code":"Code {code}","code-ending":"Code ending {code}","show-code":"Show","hide-code":"Hide","links-one":"1 link","links-many":"{count} links","remove-title":"Remove this account?","remove-description":"Re:agent can no longer sign in as {label}.","remove-error":"Could not remove the account. Try again.","outcome":{"never":"Never used","signed-in":"Used {day}, signed in, flow saved","selected":"Used {day}, selected, sign-in not used","stopped":"Used {day}, stopped at step {step}","stopped-unknown-step":"Used {day}, stopped","reported":"Agent reported: {reason}"}},"files":{"title":"Files","description":"Files a test uploads while it runs: a CSV to import, an image to attach.","empty":"No files yet","empty-description":"Add a file a test needs to upload, such as a spreadsheet.","choose":"Add a file","choose-hint":"Saved with the project, up to {size} MB.","uploading":"Uploading","replace":"Replace","replace-notice":"Replacing a file changes tests saved after it. Tests saved before keep their file.","version":"Version {number}","remove-title":"Remove this file?","remove-description":"Saved tests that use {name} keep working.","remove-error":"Could not remove the file. Try again.","error":{"too-large":"That file is over {size} MB. Choose a smaller one.","wrong-kind":"That kind of file is not supported. Choose another one.","upload-failed":"The upload did not finish. Try again."},"kind":{"audio":"Audio","csv":"CSV","document":"Document","image":"Image","json":"JSON","other":"File","pdf":"PDF","spreadsheet":"Spreadsheet","text":"Text","video":"Video","zip":"Zip"},"size-bytes":"{value} B","size-kb":"{value} KB","size-mb":"{value} MB"},"memory":{"title":"Memory","description":"What Re:agent keeps from your answers on this project.","empty":"Nothing kept yet","empty-description":"Answer a question about this project and your answer is kept here.","no-project":"Pick a project to see what it keeps.","kept":"Kept {date}","remove-error":"Could not remove this. Try again."}},"preview":{"title":"Preview","show":"Show preview","hide":"Hide preview","close":"Close preview","resize":"Resize the preview","placeholder":"The browser appears here when a test is being created."},"live":{"title-browsers":"Browsers","title-recordings":"Recordings","stack-empty":"The browsers open here when the agent starts.","close":"Close this browser","close-error":"That browser did not close. Try again.","follow":"Follow the agent","state":{"opening":"Opening","waiting":"Waiting","closed":"Closed","unavailable":"Unavailable"},"nothing-yet":"Nothing yet","nothing-on-page":"Nothing on the page yet","last-picture":"Last picture at {at}","no-steps":"Waiting for the first step.","connecting":"Connecting to the browser.","reconnecting":"Reconnecting to the browser.","not-showing":"The browser is not being shown right now.","unavailable":"The live view is not available.","size-beside":"Beside the chat","size-large":"Bigger","size-full":"Full screen","acting-in":"Working in {name}"},"trace":{"working":"Working","status":"{label} · {seconds}s","run-count":"{count} times","page":{"opened-one":"opened the page","opened-many":"opened {count} pages","clicked":"clicked {name}","clicked-plain-one":"clicked something","clicked-plain-many":"clicked {count} things","filled-one":"filled a field","filled-many":"filled {count} fields","pressed-one":"pressed a key","pressed-many":"pressed {count} keys","chose-one":"chose an option","chose-many":"chose {count} options","scrolled-one":"scrolled the page","scrolled-many":"scrolled {count} times","waited-one":"waited for the page","waited-many":"waited {count} times","read-one":"read the page","read-many":"read the page {count} times","inbox-one":"read the test inbox","inbox-many":"read the test inbox {count} times","uploaded-one":"uploaded a file","uploaded-many":"uploaded {count} files","worked-one":"took 1 step","worked-many":"took {count} steps","failed-one":"1 step did not work","failed-many":"{count} steps did not work"},"summary":{"line":"Worked for {duration} · {work}","line-more":"Worked for {duration} more · {work}","worked":"Worked for {duration}","worked-more":"Worked for {duration} more","work-only":"What it did: {work}","and":"and","browser-one":"opened a browser","browser-many":"opened {count} browsers","step-one":"took 1 step","step-many":"took {count} steps","flow-one":"saved the flow","flow-many":"saved {count} flows","run-one":"started a run","run-many":"started {count} runs","failed-one":"1 step did not work","failed-many":"{count} steps did not work"}},"queue":{"title":"Waiting to be sent","next":"Next","waiting":"{count} waiting","steer":"Steer","add-error":"Could not keep that message. It is back in the box.","steer-error":"Could not send that message. Try again.","steer-pending":"Read after the current step.","steer-unread":"Not read before you stopped. It goes with your next message.","edit":"Edit in the composer","remove":"Remove from the queue","menu":"More for this message","move-up":"Move up","move-down":"Move down","row-label":"Waiting: {message}","files-one":"1 file","files-many":"{count} files","queue-button":"Queue","to-queue":"to queue","to-steer":"to steer","full":"You can keep {count} messages waiting. Send or remove one first."},"question":{"head":"Question","hide":"Hide the question","show":"Show the question","status":"Waiting for your answer","own-words":"Or answer in your own words","skip":"Skip","send":"Send","add-account":"Add account","remember":"Remember this for {project}","answered-caption":"You answered the question.","skipped-caption":"You skipped the question.","answer-error":"Could not send your answer. Try again.","skip-error":"Could not skip the question. Try again."},"test-card":{"state":{"saved":"Saved","writing":"Writing the test","running-once":"Running it once","checking":"Checking it in a fresh browser"},"stage":{"saved":"Flow saved","written":"Test written","written-again":"Writing the test, attempt {number} of {total}","written-failed":"Test not written","first-run":"First run passed","first-run-pending":"First run","first-run-failed":"First run failed","verified":"Verified in a fresh browser","verified-pending":"Check in a fresh browser","verified-failed":"Failed in a fresh browser"},"work-summary":"Wrote and checked the test · {duration}","work-summary-plain":"Wrote and checked the test","steps-one":"1 step","steps-many":"{count} steps","edit":{"name-label":"Test name","name-placeholder":"Name this test","name-hint":"Enter saves. Escape cancels.","name-empty":"A test needs a name.","name-too-long":"A name can be up to 100 characters.","description-label":"Test description","description-placeholder":"What this test checks","description-hint":"Enter saves. Shift and Enter add a line.","description-too-long":"A description can be up to 500 characters.","revert":"Revert","save-failed":"Could not save your change. Try again."},"failure":"The test stopped at step {number}: {step}.","failure-unknown-step":"The test did not pass.","failure-ours":"Something went wrong on our side, so the check did not finish. Retry runs it again.","write-failed":"The test could not be written.","write-failed-twice":"The test could not be written. We tried twice.","write-failed-three":"The test could not be written. We tried three times.","run":"Run now","open":"Open test","watch":"Watch recording","retry":"Retry","run-started":"Run started. It checks this test.","run-error":"Could not start the run. Try again.","retry-error":"Could not write the test again. Try again."},"prompts":{"create-test":"Create a test for {url}: ","edit-test":"Change the test {name}: "}},"message":{"attachment":{"remove":"Remove","retry":"Retry","error":{"invalid-type":"This file type is not supported.","too-large":"Choose a file smaller than {size} MB.","too-many":"Add up to {count} files.","upload-failed":"Could not upload the file."}},"voice":{"transcribing":"Transcribing...","transcription-failed":"Could not transcribe.","retry":"Retry","microphone-denied":"Allow microphone access in your browser to dictate.","too-short":"Recording too short.","max-reached":"Recording stopped at the maximum length.","transcribe-to-box":"Put the words in the message","transcribe-and-send":"Transcribe and send"},"language":{"label":"Spoken language","auto-detect":"Auto-detect","search":"Search languages","no-matches":"No languages found"},"scroll-to-bottom":"Scroll to bottom"},"dictation":{"clean-up":"Clean up my words","discard":"Discard","done":"Done","undo":"Undo","undo-cleanup":"Undo cleanup","unavailable":"Dictation is not available right now. Type your message instead."},"run":{"title":"Run {number}","opening":"Opening the run.","load-error":"Could not load this run. Try again.","not-found":"Run {number} is not in this project.","not-found-description":"Check the project named at the top of the page, or find the run in the list.","project-missing":"That project is not in this workspace.","project-missing-description":"Check the link, or open the projects page to find what you are looking for.","open-projects":"Open projects","back-to-runs":"Open runs","took":"took {duration}","what-ran":"What ran","steps":"Steps","step-count":"{count} in total","step-check":"Check","no-steps":"No steps were recorded.","started-by":{"manual":"Started by hand","github":"Started by a GitHub check","validation":"Started by an approval check","rerun":"Started again"},"facts":{"environment":"Environment","address":"Address","address-count":"{count} addresses","suite":"Suite","revision":"Commit","browser":"Browser"},"rerun-of":"Re-run of #{number}","rerun":{"action":"Run these tests again","hint":"A re-run uses the same tests, each where it ran before.","error":"Could not start the re-run. Try again."},"stop":{"action":"Stop","keep-going":"Keep going","confirm-title":"Stop this run?","confirm":"The test that is running finishes first.","already-finished":"This run had already finished.","error":"Could not stop the run. Try again."},"entry":{"did-not-run":"Did not run","running":"Running","waiting":"Waiting","not-ready":"Not ready: {reason}","reasons":{"ready":"ready","draft":"draft","needs-update":"needs update","archived":"archived","not-validated":"not verified"}},"headline":{"queued":"Nothing has run yet.","running":"{done} of {total} tests done.","cancelled":"This run was cancelled before anything ran.","cancelled-done":"This run was cancelled. {done} tests ran first.","could-not-run":"Rehearsal could not run these tests.","could-not-finish":"Rehearsal could not finish this run. {done} of its tests ran first.","nothing-ran":"Nothing ran in this run.","one-failure":"{test} failed.","one-failure-step":"{test} failed at the step “{step}”.","two-failures":"{first} and {second} failed.","many-failures":"{count} of {total} tests failed.","needs-update":"The page changed where {test} reads it.","needs-update-many":"The page changed for {count} of {total} tests.","blocked":"Rehearsal could not run {test}.","blocked-many":"Rehearsal could not run {count} of {total} tests.","passed":"All {count} tests passed.","passed-one":"The test passed.","stopped":"{done} of {total} tests finished.","not-ready":"1 test was not ready, so this run could not check it. | {count} tests were not ready, so this run could not check them.","not-ready-suite":"1 test was not ready, so this run could not judge the suite. | {count} tests were not ready, so this run could not judge the suite."},"count":{"queued":"Nothing has run yet","running":"{done} of {total} finished","finished":"{done} tests finished","finished-one":"1 test finished","nothing-ran":"Nothing ran","failed":"{count} of {total} failed","blocked":"{count} of {total} blocked","needs-update":"{count} of {total} need an update","passed":"{total} tests passed","passed-one":"1 test passed","not-ready":"{count} of {total} not ready"},"player":{"no-recording":"There is no recording for this test.","not-started":"The recording appears when the first test finishes.","nothing-ran":"Nothing ran, so there is no recording.","recording-missing":"The recording was not saved for this test.","recording-missing-step":"The recording was not saved for this test. This is the screenshot at step {number}.","screenshot-badge":"Screenshot, step {number}"},"problem":{"expected":"Expected","received":"Received","seen":"Seen","stopped-at":"Stopped at step {number}, “{label}”.","stopped-at-timeout":"Stopped at step {number}, “{label}”. Timed out after {count} second. | Stopped at step {number}, “{label}”. Timed out after {count} seconds.","details":"Details"},"actions":{"screenshot":"Screenshot","trace":"Download the trace","console":"Console","open-test":"Open the test"},"live":{"title":"Live view","gloss":"The browser as it is now","flag":{"live":"Live","connecting":"Connecting"},"waiting":"Waiting for the browser","step":"Step {number}","running-now":"This test is running now.","evidence-later":"The recording appears when this test finishes."}},"player":{"play":"Play","pause":"Pause","position":"Recording position","time":"{elapsed} / {total}","speed":"{rate}x","speed-label":"Playback speed","step-line":"{number} · {label}","failed-here":"failed here","stopped-here":"stopped here","never-ran":"never ran","running-now":"running now","no-step":"no step here","recording-unavailable":"Recording not available.","screenshot-alt":"The page at the step that failed"},"results":{"status":{"passed":"Passed","failed":"Failed","blocked":"Blocked","could-not-run":"Could not run","could-not-run-detail":"Something went wrong on our side, so this run did not finish. We are sorry, and we are working on it.","cancelled":"Cancelled","queued":"Queued","running":"Running","needs-update":"Needs update"},"trigger":{"manual":"Run by hand","github":"GitHub check","validation":"Approval check","rerun":"Rerun"}},"deployments":{"title":"Deployments","subtitle":"What Rehearsal checked on {project}, newest first.","load-error":"Could not load deployments. Try again.","connect-title":"Connect GitHub","connect-description":"Connect a repository, then write a rule that says when to run tests and which address to test. Rehearsal reports each result as a check on the commit.","rules":"Rules","filters":{"all":"All","pull-requests":"Pull requests"},"chart-title":"Results in the newest {count} deployments","chart-legend":"Height is how long the run took. Colour is the result.","chart-no-runs":"No runs yet.","chart-few-runs":"{count} of the {minimum} runs a chart needs.","empty":"No runs yet","empty-hint":"Runs appear here once a rule matches.","branch-group-hint":"Rehearsal reports the result. There is nothing to block.","no-branch":"No branch","waiting":"Waiting for a deployment","run":"run #{number}","run-rerun":"run #{number}, re-run of #{parent}","open-run":"Open the run","open-check":"Open the check on GitHub","results":{"all-passed":"All {count} tests passed.","failed":"{count} of {total} tests failed.","needs-update":"{count} of {total} tests found a changed page.","blocked":"{count} of {total} tests could not run."},"conclusion":{"success":"Passed","failure":"Failed","neutral":"Nothing to report","cancelled":"Cancelled","skipped":"Nothing was deployed","timed-out":"No deployment arrived","action-required":"Needs someone to look"}},"github":{"connect":"Connect GitHub","connect-needs-admin":"Ask a workspace admin to connect GitHub.","connect-error":"Could not open GitHub. Try again.","connected-repository":"Connected repository","not-configured":"GitHub is not set up on this server.","sentence":{"when":"When","when-pull-request-into":"When a pull request into","pull-request-opens":"opens or changes, run","when-branch-matching":"When a branch matching","branch-changes":"changes, run","comma-run":", run","all-approved-tests":"all approved tests","for":"for","on-vercel-preview":"on its Vercel preview","on-vercel-branch":"on Vercel's deployment of the branch","at-action-address":"at the address sent by GitHub Actions","at":"at","and-require-merge":"and require passing tests before merging.","and-report":"and report the result in GitHub.","full-stop":".","blank":{"something-changes":"something changes","the-tests":"the tests","somewhere":"somewhere","branch":"a branch","pattern":"a pattern","an-address":"an address"}},"folded":{"when-pull-request":"a pull request into {branch} opens or changes","when-branch":"{branch} changes","when-branch-pattern":"a branch matching {branch} changes","merging-required":"merging required, verified","merging-not-blocked":"merging not blocked yet","reports-only":"reports only","tests-suite":"{suite}","tests-all":"All approved tests","address-vercel-preview":"The pull request's Vercel preview","address-vercel-branch":"Vercel's deployment of the branch","address-action":"An address from GitHub Actions","address-fixed":"{url}"},"merge":{"require":"Require passing tests before merging","steps-title":"Set this up in GitHub","step-settings":"Open the repository's settings in GitHub.","step-rules":"Open Rules and choose the rule for your target branch.","step-require":"Require status checks and add \"{name}\".","not-blocked":"Merging is not blocked yet. Make \"{name}\" required in GitHub.","show-steps":"Show the steps","required":"GitHub requires the {name} check.","last-checked":"Last checked {when}.","not-checked":"Rehearsal has not read GitHub's rules for this branch yet.","check-now":"Check now","check-again":"Check again","check-after-save":"Rehearsal can read GitHub's rules once this rule is saved.","check-failed":"Could not read GitHub's rules. Try again."},"rule":{"paused":"Paused","pause":"Pause","resume":"Resume","last-checked":"Last checked {date}","last-run":"Run #{number}, {when}","not-run-yet":"Not run yet","strip-label":"The last runs of this rule","check-name-hint":"The name this rule reports under in GitHub."},"rules":{"title":"Rules","subtitle":"What Rehearsal runs by itself when you push.","add":"Add a rule","load-error":"Could not load rules. Try again.","empty":"No rules yet","empty-description":"A rule says when to run tests, which tests to run, and which address to test.","needs-repository":"This project has no repository yet.","open-settings":"Open repository settings","remove-title":"Remove this rule?","remove-description":"Rehearsal stops checking this branch. Runs that already finished keep their results.","remove-error":"Could not remove the rule. Try again.","toggle-error":"Could not change the rule. Try again.","missing":"Rule not found","missing-description":"It may have been removed.","back":"Back to rules"},"setup":{"title":"Set up GitHub checks","subtitle":"Choose when to run tests and which app to test.","edit-title":"Change the rule","edit-subtitle":"Choose when to run tests and which app to test.","when-title":"When should tests run?","when-pull-request":"When a pull request is opened or updated","when-branch":"When a branch is updated","when-pattern":"When a branch matching a pattern is updated","target-branch":"Target branch","target-branch-hint":"For pull requests into this branch.","branch":"Branch","branch-hint":"After a push or merge.","pattern":"Branch pattern","pattern-hint":"A * stands for the rest of the name, so release/* matches every branch that starts with release/.","tests-title":"Which tests should run?","website-label":"Address to test","suite-count":"{count} tests","all-tests":"All approved tests","no-suites":"This project has no suites yet. All approved tests still works.","address-title":"Which address should Rehearsal test?","address-description":"Choose where Rehearsal opens your app.","address-vercel-preview":"The pull request's Vercel preview","address-vercel-branch":"Vercel's deployment of the branch","address-vercel-hint":"Rehearsal tests the deployment when it is ready.","address-action":"An address from GitHub Actions","address-fixed":"The same address every time","address-fixed-hint":"Use this when the branch always deploys to the same address.","address-label":"App address","address-placeholder":"https://staging.example.com","save-rule":"Save rule","save-changes":"Save changes","errors":{"branch-required":"Write a branch name.","pattern-needs-star":"A pattern needs a * in it.","branch-no-star":"Only a pattern can use a *.","address-invalid":"Write a full address, starting with https.","situation-taken":"A rule already covers that branch at this address.","save-failed":"Could not save the rule. Try again."}},"bypass":{"title":"Access to Vercel previews","description":"If your previews require sign-in, add Vercel's secret for automated access. Find it under \"Protection Bypass for Automation\" in Vercel's project settings.","not-opened-yet":"Rehearsal cannot open protected previews yet. Make previews public for now.","label":"Vercel bypass secret, optional","placeholder":"Paste the secret","saved":"Saved","replace":"Replace","removed":"Removed when you save.","undo":"Keep it","dropped-on-change":"The saved Vercel secret is removed when you save, because this rule no longer opens a Vercel deployment."},"picker":{"title":"Choose a repository","description":"Rules run on this repository. One project has one repository.","search-placeholder":"Search repositories","connect":"Connect","empty":"No repositories yet. Add one to Rehearsal in GitHub.","no-matches":"No repositories match that.","this-project":"This project","another-project":"Another project","truncated":"This list stops at 500 repositories.","load-error":"Could not load repositories. Try again.","errors":{"taken":"That repository is already connected to another project.","already-connected":"This project already has a repository. Disconnect it first.","failed":"Could not connect the repository. Try again."}},"return":{"back":"Go to Rehearsal","working":"Connecting GitHub","working-description":"One moment.","cancelled":"Nothing was connected","cancelled-description":"The install was stopped on GitHub. You can start again from the project.","link-invalid":"That link no longer works","link-invalid-description":"A connection link lasts ten minutes, works once, and has to finish in the tab that started it. Start again from the project.","unreachable":"Your GitHub account cannot see this installation","unreachable-description":"Ask an owner of the GitHub account that has Rehearsal installed to connect it here.","bound-elsewhere":"This installation belongs to another workspace","bound-elsewhere-description":"Remove Rehearsal in GitHub, then install it again from this workspace.","suspended":"This installation is suspended in GitHub","suspended-description":"Turn it back on in GitHub, then connect it again.","not-configured":"GitHub is not set up on this server","not-configured-description":"Nothing can be connected until it is.","failed":"Could not finish connecting GitHub","failed-description":"Start again from the project."}},"usage":{"title":"Usage","load-error":"Usage could not be loaded.","delete-blocked":"Cancel billing for this workspace first. Delete it once the cancellation goes through.","show-more":"Show more","per-month":"a month","plan-section":"Your plan","plans":"Plans","allowance":{"free-low-title":"You have {count} run left this month | You have {count} runs left this month","free-low-body":"They come back on {date}.","free-low-body-soon":"They come back when this month ends.","free-gone-title":"No runs left this month","free-gone-body":"Your runs come back on {date}.","free-gone-body-soon":"Your runs come back when this month ends.","see-plans":"See plans","paid-gone-title":"No runs left this month","paid-gone-body":"Your plan renews on {date}. Allow additional runs to keep going before then.","paid-gone-body-soon":"Allow additional runs to keep going before your plan renews.","allow-extra":"Allow additional runs"},"contact":{"title":"Need more than the {plan} plan?","description":"Tell us how much you run and we will set limits that fit.","volume":"Higher volume","support":"Priority support","limits":"Custom limits","cta":"Contact us","panel-title":"Tell us what you need","sent":"Message sent","placeholder":"How many test runs do you expect, and what do you need from us?"},"period":{"first-run":"Your first test run starts a free week of unlimited runs.","free-renews":"Your free runs come back on {date}.","free-renews-soon":"Your free runs come back when this month ends.","renews":"Renews on {date}.","renews-soon":"Renews at the end of this period.","ending":"Paid until {date}.","ending-soon":"Paid until the end of this period."},"meter":{"left":"run left | runs left","of-allowance":"of {count}","used":"Used","in-progress":"In progress","remaining":"Left","extra-note":"{included} included, plus {extra} your spending limit allows.","hold-note":"A run in progress holds part of your allowance. Whatever it does not count comes back."},"trial":{"gift-week":"A free week on us","left":{"days":"day left | days left","hours":"hour left | hours left","minutes":"minute left | minutes left"},"over":"Your free week has ended.","unlimited":"Unlimited runs","on-us":"Every run this week is on us.","runs-label":"Runs so far","last-day":"Last day","after-free":"After the week you get {count} free run a month. | After the week you get {count} free runs a month.","after-chosen":"The {plan} plan starts when the week ends.","chosen":"You chose the {plan} plan.","chosen-priced":"You chose the {plan} plan at {price} a month.","payment-dated":"The first payment is on {date}.","payment-first-run":"Your free week starts on your first test run.","cancel-plan":"Cancel plan","selection-pending":"We are setting up your plan. This page updates when it is done.","selection-review":"We need to check your plan before it starts."},"complimentary":{"eyebrow":"A gift","title":"The {plan} plan is on us for {count} month | The {plan} plan is on us for {count} months","runs-until":"It is active now and runs until {date}.","normally":"Normally","you-pay":"You pay","monthly":"You get {count} test run a month. | You get {count} test runs a month.","after-week":"After that you get {count} test run a month. | After that you get {count} test runs a month.","resets":"They reset on {date}.","unlimited-until":"Runs are unlimited until the end of {date}.","week-first":"Runs this week are unlimited.","no-card":"No card needed. We charge nothing when it ends.","sign-off":"Make the most of it.","dismiss":"Got it","sidebar":"Complimentary plan","plans-note":"Nothing to buy while your gift runs. You can choose a plan when it ends.","period":"Complimentary until {date}.","gone-title":"No runs left this month","gone-body":"Your runs come back on {date}.","gone-body-soon":"Your runs come back when this month ends."},"plan":{"free":{"name":"Free"},"starter":{"name":"Starter"},"team":{"name":"Team"},"current":"Current plan","scheduled":"Starts at renewal","selected":"Chosen","included-runs":"{count} test run a month | {count} test runs a month","no-card":"No card needed.","extra-price":"{price} for each run after that","choose-action":"Choose the {plan} plan","switch-action":"Switch at renewal","cancel-action":"Cancel plan","best":"Recommended","at-volume":"At {count} runs a month","uncovered":"Not enough runs","volume-breakdown":"{base} plus {count} extra run | {base} plus {count} extra runs"},"notice":{"payments-off":"Payments are not set up yet, so plans cannot be changed here.","past-due":"A payment did not go through. Update your payment details to keep running tests.","cancelling":"This plan stops on {date}. Everything works until then.","cancelling-soon":"This plan stops at the end of this period. Everything works until then.","keep-plan":"Keep plan","scheduled":"You move to the {plan} plan on {date}.","scheduled-soon":"You move to the {plan} plan at the next renewal.","undo-change":"Undo","no-runs":"No runs left in this workspace.","limit-reached":"Your spending limit is used up."},"checkout":{"confirming":"Confirming your payment.","confirmed":"Your plan is active.","waiting":"Your payment is still being confirmed. This page updates when it is done.","cancelled":"Checkout was closed. Nothing was charged.","refresh":"Check again"},"additional":{"title":"Additional runs","description":"Run more tests than your plan includes. They are charged on your monthly invoice.","switch":"Allow additional runs","on-hint":"Runs past your included allowance are allowed up to your spending limit.","off-hint":"Runs stop once your included allowance is used up.","limit":"Spending limit","limit-hint":"Up to {count} more runs at {price} each.","committed":"Extra runs this period","committed-hint":"Runs counted or in progress past your included allowance."},"spending":{"on-title":"Allow additional runs","on-description":"Set the most you want to spend on runs past your included allowance.","amount-label":"Spending limit for this period","amount-invalid":"Enter an amount, such as 50.00.","amount-positive":"Enter an amount above zero.","amount-too-high":"Choose a smaller amount.","amount-too-low":"This period has already used {amount} of additional runs, so the limit cannot go below it.","buys":"This allows up to {count} more runs at {price} each.","invoice-note":"This is a maximum, not a purchase. You pay for the runs you use.","on-confirm":"Allow up to {amount}","off-title":"Turn off additional runs","off-description":"Runs will stop once your included allowance is used up.","off-note":"Runs already counted or in progress stay on this invoice.","off-confirm":"Turn off"},"plan-change":{"checkout-title":"Start the {plan} plan","checkout-body":"{price} a month for {runs} test runs. Runs after that cost {unit} each.","checkout-note":"Payment happens on Stripe. Your runs are added once the payment is confirmed.","checkout-confirm":"Continue to payment","checkout-trial-title":"Choose the {plan} plan","checkout-trial-body":"{price} a month for {runs} test runs. Payment starts after your free week.","checkout-trial-note":"Stripe saves your card now. We charge nothing during your free week.","checkout-trial-confirm":"Continue to Stripe","schedule-title":"Switch to the {plan} plan","schedule-body-dated":"You move to the {plan} plan on {date}.","schedule-body":"You move to the {plan} plan at the next renewal.","schedule-note":"You keep the {plan} plan and its runs until then.","schedule-confirm":"Switch at renewal","schedule-trial-body-dated":"You keep your free week. Payment for the {plan} plan starts on {date}.","schedule-trial-body":"You keep your free week. Payment for the {plan} plan starts when it ends.","schedule-trial-confirm":"Switch plan","cancel-title":"Cancel the {plan} plan","cancel-body-dated":"You keep the {plan} plan until {date}. After that the workspace is on the Free plan.","cancel-body":"You keep the {plan} plan until this period ends. After that the workspace is on the Free plan.","cancel-note":"The Free plan's test runs come back every month.","cancel-trial-body":"We have charged nothing for the {plan} plan. Your free week stays as it is.","cancel-trial-note":"When your free week ends, this workspace is on the Free plan.","cancel-confirm":"Cancel plan","keep":"Keep plan"},"payment":{"title":"Billing details","description":"Your card, billing contact and tax identifier are held by Stripe.","method":"Payment method","method-hint":"Change the card this workspace is charged on.","method-value":"{brand} ending {last4}","contact":"Billing contact","contact-hint":"The name, address and email your invoices are made out to.","tax":"Tax identifier","tax-hint":"Add a VAT or tax number to your invoices.","open":"Open payment settings"},"invoices":{"title":"Invoices","empty":"No invoices yet.","error":"Invoices could not be loaded.","unnumbered":"Invoice","open":"Open invoice","status":{"paid":"Paid","due":"Due","draft":"Not issued yet","unpaid":"Unpaid","cancelled":"Cancelled"},"description":"Every invoice this workspace has been issued.","view-all":"View all"},"limit":{"needs":"This needs {count} run. | This needs {count} runs.","left":"No runs are left. | {count} run is left. | {count} runs are left.","suite-note":"A suite runs every test in it, so all of them have to fit.","try-again":"Try again","see-plans":"See plans","add-runs":"Add runs","raise-limit":"Raise the limit","open-billing":"Open usage and plan","ask-admin-runs":"Ask an admin to add more runs to this workspace.","ask-admin-payment":"Ask an admin to check this workspace's payment.","advice-plan":"Pick a plan to keep running tests.","advice-additional":"Turn on additional runs to go past your included allowance.","advice-raise":"Raise your spending limit to allow more.","run-limit":{"title":"Not enough runs left","body":"This workspace shares one allowance for test runs."},"spending-limit":{"title":"This would pass your spending limit","body":"Your spending limit decides how many runs are allowed past your plan."},"payment-required":{"title":"Payment needs attention","body":"This workspace's payment is not confirmed. If you paid a moment ago, give it a minute and try again."},"period-changed":{"title":"Your billing period changed","body":"Start this again to confirm the price of the new period."},"participant-limit":{"title":"Too many browsers in this test","body":"A test can use up to four browsers. Edit the test to use fewer."}},"failure":{"not-configured":"Payments are not set up yet, so this cannot be changed here.","pending":"A change is already being made. Wait for it to finish, then try again.","invalid-state":"This change does not fit the current plan. Reload the page and try again.","unknown-price":"This plan is not available right now.","mode-mismatch":"Payments are not set up correctly for this workspace.","unavailable":"That did not go through. Try again."},"volume":{"label":"Test runs a month","value":"{count} test runs a month","and-up":"{count}+"}},"environments":{"production":"Production","staging":"Staging","preview":"Pull request previews","local":"Local"},"scope":{"workspaces":"Workspaces","projects":"Projects","website-count":"{count} address | {count} addresses","no-projects":"No projects yet.","all-projects":"All projects","project-settings":"Project settings","usage-and-plan":"Usage and plan","new-workspace":"New workspace","new-project":"New project","environment":"Environment","add-environment":"Add environment","new-test":"New test"},"apps":{"add":"Add app","add-description":"An app is one thing you test. Give it a name and the address to start from.","name":"App name","name-placeholder":"Admin app","name-required":"Give the app a name.","name-too-long":"Use 100 characters or fewer.","name-taken":"This project already has an app with that name.","first-address":"First address","add-error":"Could not add the app. Try again.","add-environment-description":"Another address for this project.","add-environment-error":"Could not add the address. Try again."},"celebration":{"step-of":"Step {step} of {count}","first-test":{"title":"Congratulations","line":"You created your first test. It runs on its own from now on.","action":"Continue"},"free-runs":{"lead":"One more thing","title":"{count} test run included | {count} test runs included","line":"Use them on the test you just made, or on the next one.","action":"Got it","footnote":"No card needed."}},"improvement-program":{"title":"Help us improve Rehearsal","description":"May we record how you use Rehearsal? Your recordings help us find problems and improve the app.","join":"Join","decline":"No thanks","change-later":"You can change this later in your account settings.","thanks":"Thanks for joining.","save-failed":"We could not save your answer. Try again.","save-failed-ask-again":"We could not save your answer. We will ask again next time.","account":{"title":"Improvement program","row-title":"Record how you use Rehearsal","free-week":{"title":"A free week of unlimited runs","line-ahead":"It starts with your first test run.","line-running":"Your free week is running. Run as much as you like.","footnote":"No card needed. We charge nothing when it ends."},"row-description":"Your recordings help us find problems and improve the app."}},"cli-approval":{"connect-title":"Connect to the CLI","connect-workspace":"Approve the terminal to connect to your Rehearsal workspace.","connect-workspaces":"Approve the terminal to connect to your Rehearsal workspaces.","workspace-heading":"Workspace","workspaces-heading":"Workspaces","workspaces-you-can-access":"Workspaces you can access","no-workspaces":"No workspaces available right now.","browser-description":"Approve this terminal to connect it to Rehearsal.","browser-review":"Allow this terminal to access your Rehearsal projects?","access-tunnel":"Connect an app running on this computer.","access-testing-read":"Read your projects, tests and runs.","access-testing-run":"Start runs of tests you choose.","approve-terminal":"Approve","missing-link":"Run rehearsal login in your terminal, then open its link.","checking-request":"Checking this terminal.","link-expired":"This link expired. Run rehearsal login again.","lookup-failed":"Could not check this link. Try again.","already-used":"This terminal was already approved. Return to your terminal.","decision-failed":"Could not save your choice. Try again.","title":"Connect the CLI","checking":"Checking local connections.","availability-error":"Could not check local connections. Try again.","unavailable":"Local connections are unavailable right now.","deny":"Deny","approved":"Device approved. Return to your terminal.","denied":"Device denied."},"intro":{"action":"Got it","tests":{"title":"Keep related tests together","line":"A suite is a group of tests you run together. Group tests by what they check, such as signing in."},"runs":{"title":"Open a run to see more","line":"Each result keeps its recording, so you can watch what the browser did."},"deployments":{"title":"What Rehearsal can see","line":"Rehearsal never reads your source code."},"invite":{"title":"Invite teammates later","line":"You can invite teammates from workspace settings."}}}}