{"id":27573,"library":"ado-sync","title":"ado-sync","description":"ado-sync is a CLI tool for bidirectional synchronization between local test specification files (Gherkin .feature, Markdown, and various framework-specific formats) and Azure DevOps Test Cases. Version 0.1.68 is the latest stable release, with frequent updates (multiple releases per month). It supports over 20 test frameworks including Playwright, Cypress, Jest, Cucumber, and Robot Framework, and provides commands for push, pull, diff, coverage, and AI-enhanced summarization. Key differentiators include direct VS Code integration, MCP server support, and a workflow-agnostic approach that avoids lock-in to any single test runner.","status":"active","version":"0.1.68","language":"javascript","source_language":"en","source_url":"https://github.com/PavanMudigonda/ado-sync","tags":["javascript","azure-devops","test-sync","cucumber","gherkin","playwright","specsync","typescript"],"install":[{"cmd":"npm install ado-sync","lang":"bash","label":"npm"},{"cmd":"yarn add ado-sync","lang":"bash","label":"yarn"},{"cmd":"pnpm add ado-sync","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core dependency for interacting with Azure DevOps REST API","package":"azure-devops-node-api","optional":false},{"reason":"Optional MCP server integration for AI agent tool support","package":"@modelcontextprotocol/sdk","optional":true}],"imports":[{"note":"Install globally with -g and run commands directly; npx also works.","wrong":"npx ado-sync push","symbol":"ado-sync (CLI)","correct":"ado-sync push"},{"note":"Config is a JSON file loaded at runtime; ESM import assertion recommended for TypeScript/Node >= 16.","wrong":"const config = require('./ado-sync.json')","symbol":"config import","correct":"import config from './ado-sync.json' assert { type: 'json' }"},{"note":"The package ships TypeScript declarations. Use type-only import if you only need types.","wrong":"","symbol":"TypeScript types","correct":"import type { AdoSyncConfig } from 'ado-sync'"}],"quickstart":{"code":"npm install -g ado-sync\nado-sync init\ncat > ado-sync.json << 'EOF'\n{\n  \"orgUrl\": \"https://dev.azure.com/YOUR-ORG\",\n  \"project\": \"YOUR-PROJECT\",\n  \"auth\": { \"type\": \"pat\", \"token\": \"$AZURE_DEVOPS_TOKEN\" },\n  \"testPlan\": { \"id\": 12345 },\n  \"local\": { \"type\": \"gherkin\", \"include\": \"specs/**/*.feature\" }\n}\nEOF\nexport AZURE_DEVOPS_TOKEN=${AZURE_DEVOPS_TOKEN:-your_pat_here}\nado-sync push --dry-run","lang":"bash","description":"Installs ado-sync globally, runs init wizard, creates minimal config, sets Azure PAT via environment variable, and performs a dry-run push."},"warnings":[{"fix":"Review conflictAction in config; use 'fail' or 'prompt' to avoid unintended overwrites.","message":"The push command may overwrite local file changes if both local and Azure sides have diverged, depending on the conflictAction setting.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Update config to use flat 'testPlan.id' instead of nested 'testPlan: { id: ... }'","message":"Config format changed in v0.1.60: testPlan.id moved from testPlan.id to testPlan.id (flat), old nested structure deprecated.","severity":"breaking","affected_versions":"<0.1.60"},{"fix":"Switch to PAT authentication and set AZURE_DEVOPS_TOKEN.","message":"The 'auth.type=basic' is deprecated; use 'pat' with 'AZURE_DEVOPS_TOKEN' environment variable.","severity":"deprecated","affected_versions":">=0.1.50"},{"fix":"Generate a PAT with 'Test Management (Read & Write)' and optionally 'Work Items (Read)' in Azure DevOps.","message":"ADO Sync requires a Personal Access Token (PAT) with 'Test Management (Read & Write)' scope. Missing scopes result in 401 errors.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Install the required AI provider package, e.g., 'npm install openai' or 'npm install @google/generative-ai'.","message":"When using AI providers (e.g., OpenAI), the provider SDKs are optional but must be installed separately; missing SDK causes runtime error.","severity":"gotcha","affected_versions":">=0.1.60"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Verify AZURE_DEVOPS_TOKEN is set and correct, and orgUrl points to the right Azure DevOps organization.","cause":"Invalid or missing Personal Access Token (PAT) or incorrect org URL.","error":"Error: Failed to authenticate with Azure DevOps. Status code: 401"},{"fix":"Ensure testPlan.id is present at the top level of ado-sync.json as a number.","cause":"Config missing testPlan.id or the structure is wrong (e.g., nested incorrectly).","error":"TypeError: Cannot read properties of undefined (reading 'id')"},{"fix":"Adjust the glob pattern or create the specs directory with .feature files.","cause":"Glob pattern in config under 'local.include' does not match any files.","error":"Error: Local spec file not found: specs/**/*.feature"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}