Waldo integration with Fastlane requires you only to add the waldo plugin to your project:

$ fastlane add_plugin waldo

Next, create a new simulator build for your app.

You can use gym (aka build_ios_app) to build your app provided that you supply several parameters in order to convince Xcode to both build for the simulator and not attempt to generate an IPA:

gym(configuration: 'Release',
    derived_data_path: '/path/to/derivedData',
    skip_package_ipa: true,
    skip_archive: true,
    destination: 'generic/platform=iOS Simulator')

You can then find your app relative to the derived data path:

app_path = File.join(derived_data_path,
                     'Build',
                     'Products',
                     'ReleaseSim-iphonesimulator',
                     'YourApp.app')

Regardless of how you create the actual simulator build for your app, the upload itself is very simple:

waldo(upload_token: '<<waldoUploadToken>>',
      app_path: '/path/to/YourApp.app')

Note: You must specify both the Waldo upload token and the path of the .app.

Important: If you call the waldo plugin from GitHub Actions, the plugin will not automatically choose the correct git commit SHA on a PR. Therefore, you should supply the git_commit parameter to the waldo call.