browser closed
Browser closed. Press Start browser (opens the start address) or type an address above.
How to record
- Start browser and press ● Record. Every click, key and typed text is done in the browser AND saved as a step.
- Before typing into a field, choose Type as:
{username},{password}(or any input from 2 · Inputs) so each run types the caller's own value. - At the OTP box choose Type as {otp} and type the code you received. At each run, the code is read from the text message the customer's phone forwards.
- Mark the step that submits as final: a dry test stops before it.
- Press ■ Stop recording, then Save steps.
Steps
| # | Action | Element / value | opt. | final |
|---|
Flow rows: if, loop, retry, chains
- if runs the rows up to its end only when the condition holds (the page shows a text, an element is there, the address contains something, or a variable matches). Rows after an else run otherwise. not turns the condition round.
- loop repeats its rows N times, once per item of a list (read with read all like this; the item is
{item}), or while a condition holds.{loop_index}counts 1, 2, 3… break leaves the loop. - retry runs its rows again (up to N times) when one of them fails, e.g. a busy page.
- run another workflow plays a recorded workflow here, in the same browser. If it fails: stop the run, retry it, or skip it and go on.
- fail ends the run as failed with your message, e.g. inside if the page shows “Wrong password”.
Inputs
what each run needs: the input API asks the caller for these, test runs ask you| Name (variable) | Label | Type | Required | Secret | Default | Pattern | Description |
|---|
Use an input in a step as {name}, e.g. a fill step with the value {username}. {otp} is always there and is read from the phone. {secret:name} is a value kept on this server.
OTP text message
paste one real message; click the OTP in itThe OTP in it:
Custom regular expression (advanced)
Try it
tests a run without a phone
Test run
runs exactly like an input API callWorkers
Schedules
run this workflow by itself at set times| Name | When | Inputs | Next | Last run | On |
|---|
+ New schedule
On
Inputs for every run of this schedule:
Run for a list
one run per row, e.g. many usernames - as many at once as this workflow's workers| # | List | When | Progress | Status |
|---|
Passwords in a list are only kept in memory while the list runs, and never in the history. A server restart ends a list that is still going.
From another system
Another program can start this workflow with an API call:
Options
Secrets
values kept on this server, used as {secret:name}; never shown againMake a workflow with + New.
Pair a phone
- Install the FlowOTP Reader APK on the customer's Android phone.
- Make a pairing code here, then scan the QR code with the phone's camera, or type the server address and code in the app.
- In the app, allow SMS. From then on, OTP messages are forwarded to this server, even when the app is closed. Other messages stay on the phone.
Server:
Phones
| # | Name | Model | Last seen | On |
|---|
Messages forwarded
only messages that look like an OTP reach the server; they are deleted after a day| Time | Phone | Sender | Message | Used by |
|---|
What the phones forward
Input APIs
give a URL + key to someone: they send the inputs, the workflow runs with themRuns
| # | When | Workflow | From | Status | Inputs | Outputs / error | Time |
|---|
Live workers
Every run that is waiting or going now, from test runs, input APIs, lists and schedules. Screens are off by default: with them off, watching costs nothing.
Settings
Server address for phones and API callers:
Set PUBLIC_URL in .env to the address phones can reach, e.g. http://192.168.1.20:8080 on Wi-Fi, or your HTTPS domain. Runs at the same time: (MAX_PARALLEL_RUNS).
Activity
| Time | Who | Event | Detail |
|---|