A comprehensive Playwright-based tool for automated job search across multiple employment platforms. Features parallel test execution, batch job consolidation, and stateful job tracking.
- Parallel Test Execution: Run job searches across multiple sites simultaneously using all CPU cores
- Batch Job Consolidation: Safe file writing prevents data collisions during parallel execution
- Stateful Job Tracking: Maintains job application status and notes
- Multiple Job Boards: Supports ADP, ApplyToJob, SchoolSpring, Applitrack, and recruiter platforms
- Custom Browser Automation: Includes CDP browser integration for enhanced scraping capabilities
- Comprehensive Reporting: HTML test reports with screenshots and traces
prospects/
β
βββ auth/ # Authentication storage (.gitignore)
βββ tests/ # Test specifications for each job board
βββ pages/ # Page Object Model classes
βββ fixtures/ # Shared test fixtures and configurations
βββ classes/ # Helper utilities for JSON data mapping
βββ test-data/ # JSON datastores (.gitignore)
β βββ jobResults.json # Consolidated job search results
β βββ sites.json # Configured job search sites
β βββ .batch/ # Temporary batch files (auto-cleaned)
βββ playwright.config.ts # Playwright configuration
βββ globalTeardown.ts # Post-test cleanup handler
βββ package.json
βββ README.md
βββ tsconfig.json
- Node.js 16+
- npm or yarn
Install Dependencies Playwright browsers
npm install
npx playwright install chromiumRun all configured job searches in parallel:
npm testTest a specific job board:
# ADP Workboards
npx playwright test tests/adpJobs.spec.ts
# ApplyToJob sites
npx playwright test tests/atjJobs.spec.ts
# School districts
npx playwright test tests/schoolspringJobs.spec.tsSearch for specific job terms:
# Set search term and run recruiter search
export SEARCH="software engineer"
npx playwright test tests/R001Search.spec.ts
unset SEARCHTest CDP browser integration:
npx playwright test tests/uaWebdriver.spec.ts --uiFor continuous integration (runs serially):
CI=true npm testEdit test-data/sites.json to add or modify job search sites:
{
"Private": [
{
"id": "P001",
"org": "Example School",
"URL": "https://example.com/jobs",
"Provider": "ADP"
}
]
}Modify playwright.config.ts for custom settings:
- Parallel execution:
fullyParallel: true - Worker count:
workers: undefined(auto-detect CPU cores) - Timeouts: Adjust timeouts for slower sites
- Browser options: Configure browser launch parameters
Jobs are stored in test-data/jobResults.json with the following structure:
{
"Organization Name": {
"Site": "Organization Name",
"URL": "https://example.com/jobs",
"jobs": [
{
"id": "JOB123",
"title": "Software Engineer",
"link": "https://example.com/job/JOB123",
"status": "0",
"date": "2024-01-15",
"notes": ""
}
]
}
}"0": New job"1": Applied"2": Received reply"3": Interviewing"4": Declined
-
Create Page Object Model in
pages/export class NewJobBoard { constructor(page: Page, siteId?: string) {} async searchPage() { /* Navigate to search page */ } async getJobs(): Promise<Job[]> { /* Extract jobs */ } }
-
Add test specification in
tests/test.describe('New Job Board', () => { const sites = Utilities.getSitesByProvider('newboard'); sites.forEach(site => { test(`Search ${site.org}`, async ({ page }) => { const board = new NewJobBoard(page, site.id); await board.searchPage(); const jobs = await board.getJobs(); await utils.batchAppendJobs(site.id, jobs); }); }); });
-
Update site configuration in
test-data/sites.json
# Run with UI mode for debugging
npx playwright test --ui
# Run specific test with debugging
npx playwright test tests/example.spec.ts --debug
# Generate and view HTML report
npx playwright show-report- Deploy self-hosted chrome-debug docker container via Github actions
- Add more job board integrations
- Implement job application automation
- Add email notifications for new jobs
- Create web dashboard for job tracking vibe-tracker
- Add job filtering and search capabilities
- Document API for external integrations
This tool is a proof of concept and should not be used in a production environment. It is designed for educational purposes only.
Important: According to the terms of service of most job search websites, the use of robots, spiders, manual, and/or automatic processes, or devices to data-mine, data-crawl, scrape, or index websites is prohibited. Use this tool responsibly and at your own risk.