131 karma · joined February 18, 2019
Currently, Drift is language specific. You'd need the SDK installed in your backend while recording tests. This is because Drift captures not just the HTTP request/response pairs, but also all underlying dependency calls (DB queries, Redis operations, etc.) to properly mock them during replay.
A use case we do support is refactors within the same language. You'd record traces in your current implementation, refactor your code, then replay those traces to catch regressions.
For cross-language rewrites or browser-exported requests, you might want to look at tools that focus purely on HTTP-level recording/replay like Postman Collections. Hope this helps!
We capture the actual DB queries, Redis cache hits, JWT generation, and not just the HTTP calls (like you would see with mitmproxy), which lets us replay the full request chain without needing a live database or cache. This way each test runs idempotently.
1. With our Cloud offering, Tusk Drift detects schema changes, then automatically re-records traces from new live traffic to replace the stale traces in the test suite. If using Drift purely locally though, you'd need to manually re-record traces for affected endpoints by hitting them in record mode to capture the updated behavior.
2. Our CLI tool includes built-in dynamic field rules that handle common non-deterministic values with standard UUID, timestamp, and date formats during response comparison. You can also configure custom matching rules in your `.tusk/config.yaml` to handle application-specific non-deterministic data.
3. Our classification workflow correlates deviations with your actual code changes in the PR/MR (including context from your PR/MR title and body). Classification is "fine-tuned" over time for each service based on past feedback on test results.
Along the lines of verifiability, my take is that running a comprehensive suite of tests in CI/CD is going to be table stakes soon given that LLMs are only going to be contributing more and more code.
One design pattern for LLM tools that I'm very interested in exploring is having an LLM only engage when the user (human) is not in a flow state.
Take writing for example. There are times when text auto-complete is actually a welcome feature because you might be experiencing writer's block. An LLM tool providing proactive guidance then becomes a way to get unstuck. But if you're in flow and flying away at the keyboard, auto-complete becomes a distraction and can take you away from your train of thought.
There are obviously some signals that we could programmatically make use of in this scenario (words per minute, pauses between keystrokes, etc.) but I do think defining "flow" in those terms is nebulous. I can imagine a world where stuff like skin conductance tracking a la Oura Ring becomes part of the mix. Would be pretty cool.