- Add NewSessionScenario that walks the Telegram wizard:
single game, title, skip description/cover, D&D 5e, 4h, datetime,
capacity, online format, join link, public visibility, publish, confirm
- Add ClickInlineButtonAsync / ClickInlineButtonByTextAsync to TelegramUserClient
- Add local WizardCallback/Step constants mirroring GmRelay.Shared wizard wire format
- Program.cs now runs full flow: group setup + /newsession + cleanup
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add GroupSetupScenario: create supergroup, invite GmRelay bot, send /start,
wait for reply, then delete the group
- Extend TelegramUserClient with DeleteGroupAsync and channel cache
- Update Program.cs to run the scenario with cleanup in finally
- Update README status table and runner documentation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add standalone C# console runner tests/e2e/runner/ using WTelegramClient
- Provide TelegramUserClient wrapper: login, create supergroup, invite bot,
send messages/commands, read recent messages, wait for bot reply
- Add .env.example and runner .gitignore to keep secrets/session files out of git
- Update E2E README with runner instructions and status table
- Runner project intentionally excluded from GM-Relay.slnx to avoid CI/AOT impact
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add Playwright-based E2E tests in tests/e2e/dashboard/
- Authenticate via /auth/telegram-webapp using helpers/telegram_init_data.py
- Cover dashboard load and session edit flow
- Add requirements.txt and package dashboard folder
- Update README with setup and test descriptions
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add TelegramAuthPayloadBuilder in GmRelay.Shared for C# tests.
- Refactor TelegramAuthServiceTests to use the shared builder.
- Add Python equivalent (telegram_init_data.py) for E2E runner.
- Add self-contained Python tests and E2E README.
Closes#144
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>