Shopify Code QA

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

WAGE / SALARY

$1000-1500 per month

HOURS PER WEEK

TBD

DATE UPDATED

Jul 2, 2025

JOB OVERVIEW

Shopify QA Developer Lead (Code-First, Pixel-Perfect)
Job Type: Part-Time to Full-Time (long-term)
Salary: $1000 - $1500/m USD
Working Hours: Flexible
Location: Remote

About the Role:
Ecom Landers is looking for a Shopify QA Lead who’s not just checking boxes — but checking code. This isn’t your average QA role. We want someone with strong Shopify development experience who can review pages with a critical eye, catch issues others miss, and act as a technical lead overseeing frontend quality. You’ll act as the final gate before anything goes live.

What You’ll Do:
- Audit Shopify builds vs Figma designs — spacing, typography, responsiveness, animations
- Review HTML/CSS/JS and Liquid code for performance and quality
- Flag bugs, suggest fixes, and guide devs toward best practices
- Check for browser, device, and speed performance issues
- Maintain our internal QA standards and continuously improve them
- Use tools like Slack & ClickUp to log clear tickets

You’ll Work Closely With:
- Our internal development team
- PM to maintain timelines and expectations
- Design team to interpret layout requirements

Requirements:
- 5+ years Shopify frontend development experience
- True Expert in HTML, CSS, Liquid, and JavaScript
- A sharp eye for detail and CRO-minded design execution
- Confident reviewing and giving feedback on dev work
- Comfortable with tools like Slack, ClickUp, Figma, and Git

Bonus Points:
- You’ve led a team or managed dev quality before
- Past experience with CRO, A/B testing, or eCom design
- Able to write internal SOPs or create QA checklists

Why Join Us?
- Remote-first with flexible hours
- Tight-knit team that values autonomy and execution
- Growing agency with a high volume of high-quality Shopify builds

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0454
Total Execution Time  0.0468
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,503,744 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Shopify-Code-QA-1412803
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0395 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1412803
 LIMIT 1 
0.0005   SELECT *
FROM `employers`
WHERE `employer_id` = 827260
 LIMIT 1 
0.0308   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1412803
AND `misc`.`idIS NULL 
0.0006   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-21',ej.date_added) duration_daysDATEDIFF('2026-06-21',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-06-21',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1412803' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1412803 
0.0017   UPDATE employer_jobs SET hit_counts '***Jul-02-2025=206***Jul-03-2025=69***Jul-04-2025=23***Jul-05-2025=10***Jul-06-2025=15***Jul-07-2025=9***Jul-08-2025=14***Jul-09-2025=10***Jul-10-2025=2***Jul-11-2025=6***Jul-12-2025=4***Jul-14-2025=3***Jul-15-2025=7***Jul-16-2025=6***Jul-17-2025=4***Jul-18-2025=5***Jul-19-2025=2***Jul-20-2025=1***Jul-21-2025=2***Jul-22-2025=2***Jul-23-2025=9***Jul-24-2025=3***Jul-25-2025=3***Jul-26-2025=1***Jul-27-2025=1***Jul-28-2025=3***Jul-30-2025=3***Jul-31-2025=1***Aug-02-2025=1***Aug-03-2025=4***Aug-04-2025=4***Aug-05-2025=2***Aug-06-2025=1***Aug-07-2025=5***Aug-08-2025=1***Aug-09-2025=2***Aug-10-2025=4***Aug-12-2025=3***Aug-13-2025=2***Aug-14-2025=2***Aug-16-2025=3***Aug-18-2025=4***Aug-19-2025=3***Aug-20-2025=1***Aug-21-2025=2***Aug-22-2025=4***Aug-23-2025=1***Aug-25-2025=4***Aug-26-2025=1***Aug-28-2025=3***Aug-29-2025=3***Aug-30-2025=2***Aug-31-2025=2***Sep-01-2025=7***Sep-02-2025=2***Sep-03-2025=3***Sep-05-2025=2***Sep-06-2025=2***Sep-08-2025=2***Sep-09-2025=4***Sep-10-2025=2***Sep-11-2025=1***Sep-13-2025=1***Sep-14-2025=1***Sep-15-2025=3***Sep-16-2025=2***Sep-17-2025=1***Sep-18-2025=6***Sep-19-2025=2***Sep-20-2025=1***Sep-21-2025=2***Sep-22-2025=2***Sep-23-2025=3***Sep-25-2025=1***Sep-26-2025=1***Sep-28-2025=2***Sep-29-2025=1***Sep-30-2025=1***Oct-01-2025=1***Oct-02-2025=14***Oct-03-2025=3***Oct-04-2025=7***Oct-07-2025=1***Oct-08-2025=2***Oct-09-2025=4***Oct-10-2025=5***Oct-13-2025=1***Oct-14-2025=2***Oct-15-2025=3***Oct-16-2025=1***Oct-18-2025=1***Oct-19-2025=2***Oct-20-2025=1***Oct-22-2025=2***Oct-23-2025=1***Oct-24-2025=2***Oct-26-2025=2***Oct-27-2025=1***Oct-28-2025=2***Oct-31-2025=1***Nov-01-2025=2***Nov-02-2025=1***Nov-04-2025=2***Nov-07-2025=1***Nov-08-2025=2***Nov-09-2025=2***Nov-15-2025=1***Nov-17-2025=4***Nov-18-2025=3***Nov-21-2025=1***Nov-23-2025=1***Nov-25-2025=1***Nov-26-2025=2***Nov-29-2025=1***Dec-03-2025=1***Dec-11-2025=1***Dec-13-2025=3***Dec-14-2025=4***Dec-15-2025=1***Dec-19-2025=1***Dec-20-2025=1***Dec-26-2025=2***Dec-28-2025=1***Dec-29-2025=1***Dec-30-2025=1***Jan-02-2026=2***Jan-03-2026=3***Jan-05-2026=1***Jan-06-2026=2***Jan-07-2026=2***Jan-09-2026=4***Jan-10-2026=1***Jan-19-2026=1***Jan-22-2026=9***Feb-12-2026=1***Feb-17-2026=1***Feb-19-2026=1***Feb-20-2026=2***Feb-21-2026=1***Feb-24-2026=2***Mar-11-2026=1***Mar-12-2026=1***Mar-14-2026=1***Mar-15-2026=1***Mar-16-2026=1***Mar-24-2026=1***Mar-26-2026=2***Mar-28-2026=1***Mar-29-2026=1***Mar-31-2026=1***Apr-06-2026=1***Apr-07-2026=2***Apr-11-2026=1***Apr-20-2026=1***Apr-21-2026=2***Apr-22-2026=1***Apr-26-2026=1***Apr-27-2026=1***Apr-28-2026=1***May-01-2026=2***May-02-2026=1***May-03-2026=1***May-04-2026=1***May-05-2026=1***May-06-2026=3***May-08-2026=2***May-09-2026=1***May-10-2026=1***May-11-2026=3***May-14-2026=2***May-15-2026=1***May-17-2026=2***May-19-2026=1***May-23-2026=1***May-25-2026=1***May-28-2026=1***Jun-02-2026=1***Jun-03-2026=1***Jun-06-2026=2***Jun-07-2026=1***Jun-10-2026=2***Jun-11-2026=1***Jun-16-2026=1***Jun-20-2026=2***Jun-21-2026=1' WHERE job_id'1412803'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jul-2025=424***Aug-2025=64***Sep-2025=55***Oct-2025=59***Nov-2025=24***Dec-2025=17***Jan-2026=25***Feb-2026=8***Mar-2026=11***Apr-2026=11***May-2026=25***Jun-2026=12' WHERE job_id'1412803'  
0.0017   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1412803' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1412803 
0.0013   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '827260'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)