No credentials, no real environments, no external dependencies.
A lightweight integration mock server designed for QA Engineers to test and automate
third-party integrations (issue trackers, ALM tools, ITSM platforms, and security tools)
without maintaining real external environments.
This project is suitable for:
- UI automation (Playwright, Cypress, etc.)
- API automation
- Integration & contract testing
- Local development and demos
In real-world QA environments, testing integrations with tools such as Jira, Azure Boards, GitHub, ServiceNow, DefectDojo, and similar systems is often:
- Costly to maintain
- Dependent on credentials and external teams
- Unstable for automation
- Risky for test data
This platform solves these problems by:
- Mocking real-world integration APIs
- Providing predictable and controllable behavior
- Enabling end-to-end testing without external dependencies
- Allowing easy extension with new integrations
| Technology | Why It Is Used |
|---|---|
| Node.js | Lightweight, fast, and widely adopted |
| Express | Minimal and flexible HTTP server |
| TypeScript | Type safety and scalability |
| ts-node-dev | Fast development with auto-reload |
| REST APIs | Matches real integration contracts |
| Modular Routers | One router per integration for easy extensibility |
integration-mock-platform/
├── src/
│ ├── app.ts
│ ├── server.ts
│ ├── routes/
│ │ ├── index.ts
│ │ ├── jira.ts
│ │ ├── azureBoards.ts
│ │ ├── github.ts
│ │ ├── gitlab.ts
│ │ ├── bugzilla.ts
│ │ ├── fogbugz.ts
│ │ ├── bitbucket.ts
│ │ ├── pagerDuty.ts
│ │ ├── redmine.ts
│ │ ├── unfuddle.ts
│ │ ├── shortcut.ts
│ │ ├── youtrack.ts
│ │ ├── freshService.ts
│ │ ├── kenna.ts
│ │ ├── pivotalTracker.ts
│ │ └── defectDojo.ts
│ └── types/
├── package.json
├── tsconfig.json
└── README.md
git clone https://github.com/your-username/integration-mock-platform.git
cd integration-mock-platformnpm installnpm run devServer runs on:
http://localhost:4000
POST /jira/issue
Content-Type: application/json
{
"fields": {
"summary": "Login button not working",
"description": "Clicking login does nothing",
"issuetype": {
"name": "Bug"
},
"priority": {
"name": "High"
}
}
}
POST /azureboards/workitems
Content-Type: application/json
{
"title": "Checkout fails",
"type": "Bug",
"assignedTo": "[email protected]"
}POST /github/issues
Content-Type: application/json
{
"title": "Broken build",
"body": "Pipeline fails on main branch",
"labels": ["bug"]
}POST /gitlab/issue
Content-Type: application/json
{
"title": "Registration error",
"description": "500 error on submit"
}POST /bugzilla/bug
Content-Type: application/json
{
"summary": "Search returns empty results",
"product": "WebApp",
"component": "Search",
"severity": "major"
}
POST /fogbugz/case
Content-Type: application/json
{
"title": "Checkout page crashes",
"description": "Null reference exception",
"priority": "High"
}POST /bitbucket/issue
Content-Type: application/json
{
"title": "Merge conflict",
"content": "Conflicts in payment module"
}POST /pagerDuty/incident
Content-Type: application/json
{
"title": "Production outage",
"urgency": "high"
}POST /redmine/issue
Content-Type: application/json
{
"subject": "Email service down",
"priority": "Urgent"
}POST /unfuddle/ticket
Content-Type: application/json
{
"title": "Broken API endpoint",
"description": "500 error"
}POST /shortcut/story
Content-Type: application/json
{
"name": "Improve login performance",
"story_type": "feature"
}POST /youtrack/issues
Content-Type: application/json
{
"summary": "UI alignment issue",
"priority": "Medium"
}POST /freshService/ticket
Content-Type: application/json
{
"subject": "VPN access issue",
"category": "IT Support"
}POST /kenna/vulnerability
Content-Type: application/json
{
"title": "SQL Injection",
"severity": "Critical"
}POST /pivotalTracker/story
Content-Type: application/json
{
"title": "Login fails on Safari",
"storyType": "bug",
"estimate": 2,
"owner": "[email protected]"
}POST /defectDojo/import-scan
Content-Type: application/json
{
"scan_type": "Netsparker Scan",
"engagement": 12,
"verified": true,
"active": true,
"scan_date": "2025-01-10",
"minimum_severity": "Low"
}- Create a new router under
src/routes - Define mock endpoints
- Register the router in
src/routes/index.ts
It is not meant to fully replicate real APIs, but to support QA automation, Integration testing and Local development