Senior Automation QA Engineer (SDET)
$$$$
We are looking for a senior automation QA engineer to own automated testing across our web and mobile products, and to raise the engineering quality bar across the team.
The split is roughly 70 / 30:
- 70% test automation - Playwright (web) and Maestro (mobile) suites, API and integration tests, test data and environments, CI quality gates, turning production failures into permanent checks.
- 30% product engineering - you write real code in the same repos the team ships from: unit and integration tests next to the developers, internal tooling, and small to medium features or bug fixes.
This is not a manual QA role, and not script-writing in isolation. We are looking for an engineer who happens to specialise in quality: someone who can pick up a feature ticket, implement it with tests, and pass code review.
Our stack
- Languages: TypeScript, JavaScript
- Backend: Node.js, Express
- Frontend: React, React Native
- Databases: PostgreSQL, MongoDB
- Infrastructure: AWS
- Testing: Playwright, Maestro, Jest / Vitest
- CI/CD: GitHub Actions
Test automation and quality engineering (~70%)
- Own the Playwright and Maestro end-to-end suites: fast, stable, parallelised, and honest about why a test failed.
- Design the automation strategy across the pyramid instead of pushing everything to the UI layer.
- Build API and integration coverage for Node.js / Express services, including auth, error paths, and data consistency.
- Own test data and environments: fixtures, factories, seeding, resets, and isolation between runs.
- Maintain quality gates in GitHub Actions, with useful artifacts: traces, videos, screenshots, logs.
- Treat flakiness as a first-class task: find root causes, fix waits and race conditions, track suite reliability as a metric rather than adding retries.
- Build reusable automation infrastructure: abstractions, custom fixtures, mocks, service virtualisation, shared helpers.
- Turn every escaped bug or production incident into a regression test.
- Report quality clearly: what is covered, what is failing and why, and what it means for a release decision.
- Join design and refinement early, so features are testable before they are built.
- Run targeted exploratory testing where automation is not yet the right tool.
Product engineering and feature work (~30%)
- Write unit and integration tests for production code in Jest or Vitest - real assertions and edge cases, not coverage padding.
- Implement small to medium features and bug fixes in Node.js, React, or React Native, to the same review standards as the rest of the team.
- Refactor for testability: break up tightly coupled code and introduce seams without changing behaviour.
- Review other engineers' code with specific, actionable feedback on test quality, error handling, and failure modes.
- Build internal tooling that shortens the team's feedback loop: scripts, CLI utilities, dashboards, mock services.
- Coach engineers on testing, error handling, retries, idempotency, and failure isolation, so quality is not owned by one person.
- Help troubleshoot production issues: read logs and traces, reproduce, drive to resolution. Occasional incidents outside working hours.
What we're looking for
- 4+ years in test automation, SDET, or software engineering, owning automated testing for a production web or mobile product.
- Strong JavaScript and TypeScript: typed, maintainable code, and a solid grasp of async behaviour, promises, and timing issues.
- Software engineering fundamentals: Git workflows, code review, debugging, design patterns, SOLID, and how HTTP, REST, auth, and async systems actually work.
- Unit and integration testing, not only end-to-end: mocking, test doubles, fixtures and factories, parameterised tests, and knowing when a unit test is the wrong tool.
- Owning a Playwright, Cypress, or equivalent suite at scale, including parallel execution and flakiness reduction.
- REST API testing: tooling, contract or schema validation, negative and edge cases.
- Reading and contributing to a production Node.js and React codebase: navigate unfamiliar code, trace a bug to its source, ship a fix with tests.
- Working SQL and PostgreSQL: query and verify data, understand schemas and migrations, use the database to set up and assert test state.
- Building CI/CD pipelines in GitHub Actions or equivalent: caching, parallel jobs, artifacts, and keeping pipeline time under control.
- Debugging across frontend, backend, database, and infrastructure.
- Clear async written communication: bug reports and test results people can act on without a meeting.
AI-assisted engineering (required)
We build AI features and use AI tooling daily. You do not need to be an ML engineer, but you should already work this way:
- Daily use of frontier models and agentic coding tools (Claude Code, Codex, Cursor) for tests, fixtures, refactoring, and code investigation.
- A repeatable way of giving agents context - instruction files, tool definitions, MCP servers, subagent roles - and the judgement to review output instead of merging it blindly.
- Understanding that AI-driven features cannot be validated by conventional assertions alone, and willingness to grow into evaluation work: golden datasets, scoring, regression gates.
- A practical sense of token spend and wall-clock time per unit of delivered work.
Required languages
English
B2 - Upper Intermediate
Ukrainian
B2 - Upper Intermediate
See stats of candidates who applied for this job ๐
๐
Average salary range of similar jobs in
analytics โ
Loading...