Skip to main content
The connector ships a script that opens a real TCP socket and replays a realistic F500 session. It exercises the entire path — framing, protocol parsing, HTTPS forwarding, device resolution, deduplication and day reconciliation — without a terminal in the room.
Run this before the hardware arrives. Every configuration mistake you would otherwise discover on installation day — wrong secret, wrong backend URL, unregistered serial, unmapped user — shows up here in thirty seconds.

Running it

With the connector running:
Or with explicit values:

What the session contains

The replay sends three messages:
1

A keepalive

Announces the device. This alone should flip a registered device to Online.
2

Two time logs

A punch in and a punch out for the given terminal user.
Some scenarios also exercise an admin log — a terminal enrolment event.

What success looks like

In the connector’s output

Three acknowledgement lines: one for the keepalive, two for the uploaded logs.
Missing acknowledgements are the signal. If the punches are not acknowledged, the connector did not get a success from OnTime — a wrong CONNECTOR_SECRET or an unreachable BACKEND_URL. That is exactly the failure mode you are testing for.

In OnTime

Attendance → Devices. If the serial was not registered, it appears in the unclaimed list instead — also a correct outcome, and your cue to register it.
On the live board and on the employee’s day, if the terminal user ID resolves to an employee.
If no employee matches the user ID, the punches park as unmapped. This is a correct outcome, not a failure — it proves parking works. Map the user and watch them replay.
The employee’s day record updates with the punch times and hours.

A useful test sequence

1

Run it with an unregistered serial

Confirms the unclaimed-device path: the serial appears in OnTime and the connector still acknowledges, so a real device’s queue would drain rather than back up.
2

Register the serial, run it again

Confirms registration and adoption.
3

Run it with an unmapped user ID

Confirms parking. The punches should be held, not lost and not misattributed.
4

Map the user, then check the day

Confirms replay. The parked punches should apply and the day should reconcile — without re-running the script.
5

Run the same session twice

Confirms deduplication. The second run should produce no duplicate punches.
That sequence exercises every rule in the punch lifecycle. If all five behave, the deployment is sound.

What it does not test

The fake device speaks the protocol correctly by construction. It will not catch a real terminal’s firmware quirks, a timezone misconfiguration on the physical device, or network problems between the terminals and the connector host.It tests your side of the wire thoroughly, and the device’s side not at all.