/WORK / Quality engineering
AI-assisted QA agent
Intelligent test execution, evidence-based bug detection, and automated code investigation for complex web applications.
This is an AI-assisted quality engineering agent for browser-based testing. It analyzes application behavior, identifies potential defects, and investigates relevant source code when a failure needs a deeper look. Browser automation, structured evidence, deterministic checks, and model-based reasoning sit in one workflow. The first target is a legacy web application whose main interface runs inside an iframe, so authentication, navigation, application state, and failure classification are part of the test, not a setup detail.
- Category
- Quality engineering
- People
- Engineers reviewing a structured test result
- A legacy web application reached through an authenticated iframe
- Contribution
- I built this agent myself. The work is the whole workflow: browser execution, evidence, model analysis, deterministic verification, and conditional code investigation.
- Status
- In progress
The challenge
Testing a complex legacy web application still takes a lot of manual effort. A failed browser request is not automatically a product defect, and a page that loads is not proof that the feature worked.
The workflow has to sign in, reach the target feature, and operate an interface that lives inside an iframe. It has to keep console errors, JavaScript exceptions, and failed network requests. It also has to tell a genuine defect apart from an expected failure, a third-party request, or environmental noise. A model should analyze the meaningful anomalies, and source investigation should start only when the evidence justifies it. The result has to be structured and reviewable, with automated Jira creation left off.
The solution
The run is a sequence of stages. Browser automation collects evidence. A model classifies that evidence. A deterministic check decides whether a suspicion should continue. Code investigation runs only after that, and the artifacts stay available for a person to read.
- Authenticate, open the relevant area, and interact with the target interface inside the iframe.
- Persist navigation details, iframe information, console errors, JavaScript exceptions, and failed network requests, with sensitive values redacted.
- Classify the outcome as PASS, ANOMALY, or SUSPECTED_BUG from the context of each failure.
- Verify a potential defect in a separate stage, and stop early when the run passes or model analysis is unavailable.
- Search relevant application repositories only when a meaningful failure warrants it.
- Write structured evidence and analysis for review. Automated Jira creation stays disabled.
System architecture
Browser automation executes the journey and observes the application. Evidence collection captures and sanitizes what the later stages need. AI analysis interprets that context and names potential anomalies. Bug verification applies deterministic checks before a suspicion is treated as something to investigate. Code investigation examines relevant repositories only when the analysis workflow triggers it. Structured reporting persists machine-readable results for review, debugging, and a later integration.
Those responsibilities stay separate so execution, evidence, reasoning, and verification can be tested on their own. The language model is not the sole authority on whether a defect exists. OpenAI APIs provide the model calls used for evidence analysis and contextual reasoning. LangChain can provide the model, prompt, and tool abstractions. LangGraph can orchestrate the stages as a stateful graph, including conditional transitions. LangSmith can trace and evaluate those model calls.
Read the stages from left to right. Code investigation runs only after verification.
01 Run
- Browser automationAuthenticated journey into the iframe interface.
- EvidenceConsole, exceptions, and failed requests, redacted before they are stored.
02 Judge
- AI analysisPASS, ANOMALY, or SUSPECTED_BUG from the context of the run.
- VerificationDeterministic checks. The workflow can stop when the run passes.
03 Follow through
- Code investigationRepository search only when the evidence warrants it.
- ReportingStructured artifacts. Jira creation stays off.
Model analysis and defect verification are different stages. A healthy run does not continue into source-code investigation.
Key engineering decisions
Collect evidence before asking the model
Engineering challenge
A model asked to explain a failure it did not observe will invent a story. A log dumped in without context will treat noise as a defect.
Implementation approach
The agent completes the authenticated path, interacts with the iframe, and stores navigation, iframe, console, exception, and failed-request evidence. Sensitive information is redacted before that record is persisted. Analysis runs on the record.
Engineering rationale
The model reasons over what the browser did. The primary application operation can succeed even when a third-party request fails, and the evidence is what makes that distinction possible.
Trade offs
The run spends time collecting and sanitizing before any model call. That cost is the alternative to analyzing a raw, unredacted trace.
Classification is not confirmation
Engineering challenge
Error presence is a weak signal. Marking every console or network failure as a bug floods the result. Skipping verification would let a suspicion stand as a defect.
Implementation approach
Analysis labels the outcome PASS, ANOMALY, or SUSPECTED_BUG. A separate verification stage then decides whether a suspected defect should go further. If the execution passes, or if AI analysis is unavailable, the workflow stops instead of continuing into investigation.
Engineering rationale
Deterministic checks sit around the model assessment. An unverified suspicion is not stored as a confirmed bug.
Trade offs
A real defect can wait in the suspected state until verification agrees. That delay is preferable to filing a conclusion the checks do not support.
Investigate code only when the evidence warrants it
Engineering challenge
Searching application repositories on every run, including healthy ones, spends time and model use without adding a finding.
Implementation approach
Code investigation is a conditional stage. It searches relevant repositories for implementation detail only after a meaningful failure has passed the earlier stages.
Engineering rationale
Source reading stays attached to a specific anomaly. Passes stay in the browser evidence.
Trade offs
A borderline anomaly that verification does not promote never opens the repositories. The workflow favors a focused investigation over a standing code search.
Keep defect reporting under human control
Engineering challenge
An automated ticket from a suspected bug would present an unverified result as team work.
Implementation approach
The agent writes structured evidence and analysis that can be inspected on their own. Automated Jira creation remains disabled while detection and verification are still being developed.
Engineering rationale
A person can review the artifacts and decide what, if anything, becomes a defect report. The detection workflow does not need a live tracker to be useful.
Trade offs
Nothing is filed by itself. A future Jira integration would have to be an explicit, separate switch, not a default of this stage.
Core capabilities
Browser automation and evidence collection
The agent signs in, opens the relevant area, and interacts with the target interface inside an iframe. It records navigation, iframe information, console errors, JavaScript exceptions, and failed network requests.
Value. A reviewer can see what the browser did, not only a pass or fail line.
Complexity. Sensitive values are redacted before the evidence is persisted.
AI-assisted failure analysis
The evidence is classified as PASS, ANOMALY, or SUSPECTED_BUG. Each failure is read in context. An expected third-party failure does not become a product defect when the primary operation succeeds.
Value. The result separates noise from a lead worth a person's time.
Complexity. The model interprets the record. It does not decide that an error string alone is a bug.
Deterministic bug verification
Potential defects pass through a verification stage that is separate from the model assessment. The run can stop when it passes, or when AI analysis is unavailable.
Value. An unverified suspicion is not treated as a confirmed bug.
Complexity. Predictable checks wrap the model output, so a missing analysis does not fall through into investigation.
Conditional code investigation
When a meaningful failure warrants it, the agent can search relevant application repositories for the implementation behind the evidence.
Value. Investigation stays tied to a real anomaly instead of running on every execution.
Complexity. Healthy runs do not trigger source-code analysis.
Structured results
Evidence and analysis are written as artifacts a person can inspect. Automated Jira creation stays disabled.
Value. The detection workflow can be reviewed and developed without creating tickets on its own.
Complexity. Reporting is a persisted result, not an integration that files work.
Technology stack
Model
- OpenAI APIs
Agent workflow
- LangChain
- LangGraph
- LangSmith
Execution
- Browser automation
- Iframe-aware navigation
- Redacted evidence
Engineering impact
Evidence is collected before a model is asked to analyze a failure. Deterministic checks cover the predictable questions, and deeper code investigation runs only when the earlier stages justify it.
Model analysis stays separate from defect verification, so a language-model assessment is not stored as proof. Sensitive information is redacted from the persisted evidence.
Structured outputs can be inspected and tested. Automated Jira creation remains a future integration under explicit control, not part of the current workflow.
Workflows and modules
These drawings describe the workflow. They are not captures of a test run or of the application under test.
Observe
- Authentication
- Iframe interaction
- Console and network evidence
Interpret
- PASS
- ANOMALY
- SUSPECTED_BUG
- Deterministic verification
Investigate
- Conditional repository search
- Structured artifacts
- 01Reach the feature
Sign in and operate the interface inside the iframe.
- 02Record the run
Keep the browser evidence and redact sensitive values.
- 03Classify and verify
Label the outcome, then apply deterministic checks.
- 04Stop or investigate
Search code only for a meaningful failure. Leave Jira creation off.
Engineering takeaways
- I use a model to read evidence, not to replace the browser run or the person who reviews the result.
- The useful design is the sequence: trustworthy evidence, a contextual read, a deterministic check, then investigation only when that check says to continue.
- This is a foundation for a more explainable QA workflow. It is still in progress, and it does not file defects on its own.