What simulation does exactly is it runs a dry‑run / gas estimation for the transaction to:
- detect reverts/failed calls,
- compute gas price & gas limit (via RPC exact estimation or an estimator contract),
- verify amounts/slippage and approvals,
- update the returned LiFiStep with better estimate and a transactionRequest that is more likely to succeed.
Simulation is most effective for same chain swaps
You cannot fully simulate off‑chain or destination‑chain asynchronous behaviors (relayers, validators, cross‑chain message finality, external relayer fees) — those parts may still fail for reasons not catchable by a simple on‑chain dry‑run. The system does add destination gas estimates where possible, but it cannot emulate external relayers or off‑chain steps perfectly.
The easiest would probably be to call the endpoint for a contract call on the same chain. In this case, the calldata should be more direct to the Executor. After checking that that will work, you can try to call it from another chain.