Chris Magill

Quality Assurance Engineer

Manual & Automated Testing | Web, iOS & Android

Quality Assurance Engineer | Mobile, Web & API Testing | AI-Assisted Testing with Claude Code | Nashville, TN

Test counts from my own repositories.

About

I test web and mobile apps using manual and automated testing so releases ship stable. I have covered iOS, Android and web across Dev, QA, Staging and Production.

At IDEXX I wrote automated tests in Python and Selenium, traced root causes with SQL and Datadog, and worked with engineering and product to catch critical defects early.

The projects below are test frameworks I built to practice that work in the open.

  • Software Development Specialist (QA & Test Automation), IDEXXAug 2024 to Oct 2026, Franklin, TN
  • QA Engineer, Firehouse SubsMar 2024 to Aug 2024, Remote
  • QA Engineering Apprenticeship, Coding TempleAug 2023 to Oct 2023

Tech stack

What I use day to day, and what these projects are built with.

Languages
Python, Java, JavaScript, TypeScript, SQL
Frameworks
Selenium, Playwright, Cypress, pytest, JUnit 5, Behave, Hypothesis
Tools
Postman, JMeter, Docker, Maven, GitHub Actions, Jira, TestRail, LambdaTest, TestRigor, Datadog, LaunchDarkly, axe-core, Claude Code

Projects

Each one is a public repository with its own README. Most run in CI on GitHub Actions.

saucedemo-selenium-pytest-framework

UI test framework for saucedemo.com: Python, Selenium and pytest with a Page Object Model, run in CI on GitHub Actions.

17 tests across login, inventory, cart and checkout, tagged smoke or regression. Failures save a screenshot, and every CI run uploads an HTML report.

17 tests
  • python
  • selenium
  • pytest
  • page-object-model
  • test-automation

ai-assisted-test-generation

AI-assisted test generation with Claude Code: user stories to test cases to Playwright tests, with every AI mistake logged.

Nine user stories became 31 reviewed test cases and 31 Playwright tests. A person reviews each step, and the AI's mistakes are written down in a review log.

31 tests
  • claude-code
  • playwright
  • typescript
  • ai-assisted-testing
  • test-automation

ai-assistant-evaluation-tests

Automated quality checks for an AI assistant's answers: grounding, citations, refusals, consistency and golden questions, with a CI quality gate (pytest, GitHub Actions).

Three deliberately broken assistants must each fail the checks, and the tests caught a real ranking defect while I built it.

182 passed, 2 xfailed
  • ai-testing
  • llm-evaluation
  • pytest
  • quality-gate
  • github-actions

wage-compliance-property-tests

Property-based tests (Hypothesis + pytest) for a wage compliance rules engine, with a rule traceability matrix and a CI quality gate on GitHub Actions.

I broke the engine three ways on purpose and the tests caught each one. A CI gate fails if any rule has no tests.

48 passed
  • hypothesis
  • property-based-testing
  • pytest
  • traceability
  • quality-gate

More projects

  • restful-booker-api-tests

    API tests for the Restful-Booker API in pytest and in a Postman collection run with Newman, with GitHub Actions CI.

    22 tests
    • api-testing
    • pytest
    • postman
    • newman
  • the-internet-cypress-e2e

    Cypress end-to-end tests for the-internet.herokuapp.com, covering forms, dialogs, dynamic content and HTTP status codes, with GitHub Actions CI.

    26 tests
    • cypress
    • end-to-end-testing
    • javascript
    • test-automation
  • qa-test-documentation-saucedemo

    Manual QA test plan, 42 executed test cases (31 pass, 11 fail) and 11 bug reports for the SauceDemo store.

    42 cases
    • test-plan
    • test-cases
    • bug-reports
    • manual-testing
  • jmeter-api-performance-tests

    Apache JMeter performance tests for a public REST API with smoke, load and stress scenarios, pass/fail thresholds and GitHub Actions CI.

    • jmeter
    • performance-testing
    • load-testing
    • api-testing
  • selenium-grid-docker-tests

    Cross-browser Selenium and pytest suite that runs in parallel on a Dockerized Selenium Grid (Chrome and Firefox), with GitHub Actions CI.

    16 runs
    • selenium-grid
    • docker
    • selenium
    • pytest
  • bdd-behave-selenium-tests

    BDD test suite in Gherkin with Behave and Selenium (Python), using the Page Object Model and GitHub Actions CI.

    14 scenarios
    • bdd
    • behave
    • gherkin
    • selenium
  • sql-data-validation-tests

    SQL data quality checks run with Python and pytest: clean data passes every rule and injected defects are caught.

    31 tests
    • sql
    • sqlite
    • data-quality
    • data-validation
  • accessibility-axe-selenium-tests

    Automated WCAG 2.1 accessibility testing with axe-core, Selenium and pytest, with a summary report and GitHub Actions CI.

    20 tests
    • accessibility
    • wcag
    • axe-core
    • selenium
  • pokeapi-contract-tests

    API contract tests for a public REST API using JSON Schema, pytest and requests, with offline strictness tests and GitHub Actions CI.

    74 tests
    • contract-testing
    • json-schema
    • api-testing
    • pytest
  • visual-regression-selenium-tests

    Visual regression tests: Selenium + pytest + Pillow screenshot comparison with baselines and red diff images, CI on GitHub Actions

    34 tests
    • visual-regression
    • selenium
    • pytest
    • pillow
  • log-analysis-root-cause-tests

    Python log analysis tool that finds error spikes after a deploy and traces which service failed first, with pytest tests and a CI regression gate (synthetic logs)

    152 passed, 1 xfailed
    • python
    • pytest
    • log-analysis
    • root-cause-analysis
  • ai-eval-pytest-framework

    pytest framework that grades an AI model's answers with code checks (accuracy, format, tool use, hallucination, safety) and a CI quality gate; offline mock model, optional Anthropic API

    88 tests
    • ai-testing
    • llm-evaluation
    • pytest
    • quality-gate
  • flaky-test-detector

    Flaky test detector for pytest: reruns a suite in normal and shuffled order, finds flaky and order-dependent tests, and fails a CI quality gate on any test not in quarantine (Python, pytest, GitHub Actions)

    97 tests
    • python
    • pytest
    • flaky-tests
    • quality-gate
  • api-security-owasp-tests

    Security tests for a demo shop API in pytest and Flask, mapped to the OWASP API Top 10: ten weaknesses can be planted one at a time, and the suite must catch each one, only through its own tests (Python, pytest, Flask, GitHub Actions)

    98 passed
    • api-security
    • owasp
    • pytest
    • flask
  • java-selenium-junit-tests

    Java UI tests with Selenium and JUnit 5 for a practice shop, using a Page Object Model: eight weaknesses can be planted one at a time, and the suite must catch each one (Java, Maven, GitHub Actions)

    35 passed
    • java
    • selenium
    • junit-5
    • maven
  • jmeter-jsonplaceholder-smoke

    Small Apache JMeter smoke test against the public JSONPlaceholder API, with status and JSON assertions and a GitHub Actions workflow that fails on any failed request.

    • jmeter
    • performance-testing
    • api-testing
    • github-actions

Contact

Hiring for QA? Email is the fastest way to reach me.