Favbet TechQA Automation Lead2024-Present

Mobile Test Automation Pipeline

Leading the implementation of end-to-end mobile automation infrastructure, establishing device farms, CI/CD pipelines, and mentoring a team of 15+ engineers in mobile testing best practices.

AppiumDetoxWebDriverIOBitriseGitLab CIBrowserStackMaestroFlutter
99.9%
Pipeline Reliability

The Challenge

The mobile apps (iOS and Android) had no automated testing, relying entirely on manual QA. Each release required 1-2 weeks of manual regression, and bugs were frequently discovered in production. The team lacked mobile automation expertise, and there was no infrastructure for running mobile tests at scale.

  • Zero mobile test automation across iOS and Android platforms
  • 1-2 week manual regression cycles for each release
  • Production bugs discovered by users, not QA
  • No device farm or infrastructure for parallel mobile testing
  • Team of 15+ engineers with no mobile automation experience

The Solution

  • Architected mobile automation strategy using Detox for React Native and Appium for native features
  • Set up cloud device farm with BrowserStack for parallel execution across 50+ device configurations
  • Implemented Bitrise CI/CD pipeline with automatic test triggering on PRs
  • Created comprehensive training program and mentored 15+ engineers
  • Built visual regression testing for UI consistency across devices

As the QA Automation Lead, I not only built the technical infrastructure but also focused on team enablement. I created a mobile testing academy with hands-on workshops, pair programming sessions, and a certification path. The framework was designed for extensibility, allowing the team to add new test capabilities without deep technical knowledge.

Detox Test with CI Integration

typescript
// Mobile E2E test with Detox + Bitrise CI
import { device, element, by, expect } from 'detox';

describe('User Authentication Flow', () => {
  beforeAll(async () => {
    await device.launchApp({
      newInstance: true,
      permissions: { notifications: 'YES' }
    });
  });

  beforeEach(async () => {
    await device.reloadReactNative();
  });

  it('should complete login flow', async () => {
    // Navigate to login
    await element(by.id('login-button')).tap();

    // Enter credentials
    await element(by.id('email-input')).typeText('test@example.com');
    await element(by.id('password-input')).typeText('SecurePass123');

    // Submit and verify
    await element(by.id('submit-button')).tap();
    await waitFor(element(by.id('dashboard-screen')))
      .toBeVisible()
      .withTimeout(5000);

    // Visual regression check
    await expect(element(by.id('dashboard-screen')))
      .toHaveScreenshot('dashboard-logged-in');
  });
});

Key Results

Quantifiable outcomes achieved through this implementation

99.9%
Pipeline Reliability
200+
Automated Scenarios
15+
Engineers Trained
80%
Coverage iOS/Android

Performance Metrics