This monorepo contains a comprehensive collection of tools for testing and monitoring the XMTP protocol and its implementations.
Run tests for specific modules using these commands:
Measures operations in milliseconds and aggregates results in a Datadog dashboard
yarn test ts_performance
Measures geolocation of the library in the dev network
railway run -s xmtp-qa-testing:us-west yarn test ts_performance | tee logs/us-west-performance.log
Tests multiple concurrent streams to detect any message losses
yarn test ts_delivery
End-to-end testing for the Gm bot across browser and Node.js environments
yarn test ts_gm
Predefined personas (Bob, Joe, Sam, etc.) are initialized with the getWorkers
function:
let personas: Record<string, Persona>;
beforeAll(async () => {
personas = await getWorkers(["alice", "bob", "randomguy"], testName);
});
const bob = personas.get("bob");
See more in the workers section
A versatile bot for manual interaction testing:
yarn bot
Learn more in the test bot section
- Message Delivery: Workflow Dashboard
- SDK Performance: Performance Dashboard
Explore more in the dashboards section
See our CI/CD pipeline configuration in the workflows section
- Helpers: Utility functions in the helpers section
- Scripts: Automation scripts in the scripts section
We use Vitest for running tests with an interactive UI for better visualization.
Check out our live deployment on Railway
Run the Vitest UI locally:
yarn start
We use Playwright for web automation testing:
See our example xmtp.chat script
yarn test xmtpchat
LG.HDR.4K.mp4
We document bugs in the bugs folder for easy reproduction and tracking.
- libxmtp - Core library implementation
- node-sdk - Node.js SDK
- react-native-sdk - React Native implementation
- Visit our Public Railway project
Follow our progress on the QA Board
- Repo issues