{"id":37039728,"url":"https://github.com/xping-dev/sdk-dotnet","last_synced_at":"2026-01-14T04:42:34.450Z","repository":{"id":267502469,"uuid":"860862951","full_name":"xping-dev/sdk-dotnet","owner":"xping-dev","description":"Observability for .NET test suites. Track test reliability, detect flaky tests, and gain confidence in your testing with minimal setup. Supports NUnit, xUnit, and MSTest.","archived":false,"fork":false,"pushed_at":"2026-01-05T15:47:32.000Z","size":3629,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-08T11:38:20.285Z","etag":null,"topics":["ci-cd","csharp","dotnet","flaky-tests","mstest","nunit","observability","test-automation","test-reliability","testing","xunit"],"latest_commit_sha":null,"homepage":"https://xping.io","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xping-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-09-21T11:18:25.000Z","updated_at":"2026-01-05T15:47:31.000Z","dependencies_parsed_at":"2025-08-17T12:17:40.423Z","dependency_job_id":"bda36c24-ae9d-4b8c-b6a7-cb1c48dd0fa0","html_url":"https://github.com/xping-dev/sdk-dotnet","commit_stats":null,"previous_names":["xping-dev/sdk-dotnet","xping-dev/sdk"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/xping-dev/sdk-dotnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xping-dev%2Fsdk-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xping-dev%2Fsdk-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xping-dev%2Fsdk-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xping-dev%2Fsdk-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xping-dev","download_url":"https://codeload.github.com/xping-dev/sdk-dotnet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xping-dev%2Fsdk-dotnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28409767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ci-cd","csharp","dotnet","flaky-tests","mstest","nunit","observability","test-automation","test-reliability","testing","xunit"],"created_at":"2026-01-14T04:42:33.774Z","updated_at":"2026-01-14T04:42:34.444Z","avatar_url":"https://github.com/xping-dev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"top\"\u003e\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.nuget.org/packages/Xping.Sdk.Core/\"\u003e\u003cimg src=\"https://img.shields.io/nuget/v/Xping.Sdk.Core?label=Xping.Sdk.Core\" alt=\"NuGet\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/xping-dev/sdk-dotnet/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/xping-dev/sdk-dotnet/actions/workflows/ci.yml/badge.svg\" alt=\"Build Status\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://codecov.io/gh/xping-dev/sdk-dotnet\"\u003e\u003cimg src=\"https://codecov.io/gh/xping-dev/sdk-dotnet/graph/badge.svg?token=VUOVI3YUTO\" alt=\"codecov\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/xping-dev/sdk-dotnet/main/docs/media/logo.svg\" width=\"50\" alt=\"Xping Logo\" /\u003e\n  \u003ch1\u003eXping for .NET\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eStop guessing. Start knowing which tests you can trust.\u003c/strong\u003e\n    \u003cbr /\u003e\n    Automatic flaky test detection and test reliability insights for .NET teams.\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"#quick-start\"\u003e\u003cstrong\u003eQuick Start\u003c/strong\u003e\u003c/a\u003e •\n    \u003ca href=\"#the-problem\"\u003e\u003cstrong\u003eThe Problem\u003c/strong\u003e\u003c/a\u003e •\n    \u003ca href=\"#what-you-get\"\u003e\u003cstrong\u003eWhat You Get\u003c/strong\u003e\u003c/a\u003e •\n    \u003ca href=\"https://docs.xping.io\"\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/a\u003e •\n    \u003ca href=\"https://docs.xping.io/known-limitations.html\"\u003e\u003cstrong\u003eKnown Limitations\u003c/strong\u003e\u003c/a\u003e •\n    \u003ca href=\"https://github.com/xping-dev/sdk-dotnet/issues\"\u003e\u003cstrong\u003eReport Bug\u003c/strong\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n---\n\n## The Problem\n\n**How much time did your team waste debugging flaky tests last week?**\n\nWe've all been there. Your test passes locally but fails in CI. You re-run it and it passes. You waste hours investigating only to find out the test itself is unreliable, not your code.\n\nTraditional test frameworks tell you if a test passed or failed—but they don't tell you if you can **trust** that result. Teams spend countless hours:\n\n- Re-running tests hoping they'll pass\n- Debugging tests that fail intermittently\n- Wondering if failures are real bugs or environmental issues\n- Lacking visibility into test reliability across environments\n\n**Xping solves this.** We bring observability to testing, giving you confidence scores, flaky test detection, and actionable insights—all with minimal setup.\n\n---\n\n## What You Get\n\n### For Everyone\n- **Automatic Flaky Test Detection** - Statistical analysis identifies unreliable tests before they become a problem\n- **Test Reliability Insights** - See which tests you can trust and which need attention\n- **Zero-Config Setup** - Add one attribute or line of code, start tracking immediately\n- **Minimal Overhead** - Less than 5ms per test, sub-1KB memory footprint\n\n### For Developers\n- **Focus on Real Bugs** - Stop chasing flaky tests, focus on actual issues\n- **Environment Comparison** - Understand how tests behave locally vs. CI/CD\n- **Historical Trends** - See test reliability over time\n\n### For QA \u0026 Engineering Leaders\n- **Data-Driven Decisions** - Quantify test suite quality with hard metrics\n- **Problem Identification** - Automatically spot flaky tests across your entire suite\n- **CI/CD Intelligence** - Works seamlessly with GitHub Actions, Azure DevOps, Jenkins, GitLab, and more\n\n### Technical Features\n- **Test Execution Tracking** - Automatically collect test results, duration, outcomes, and environment metadata\n- **Resilient Upload** - Retry policies and circuit breakers for reliable data delivery\n- **Multi-Framework Support** - NUnit, xUnit, and MSTest\n- **Flexible Configuration** - JSON, environment variables, or programmatic setup\n\n---\n\n## Quick Start\n\nGet started in under 5 minutes:\n\n### 1. Install the SDK\n\n```bash\ndotnet add package Xping.Sdk.NUnit    # or Xping.Sdk.XUnit / Xping.Sdk.MSTest\n```\n\n### 2. Configure with environment variables\n\n```bash\nexport XPING_APIKEY=\"your-api-key\"\nexport XPING_PROJECTID=\"your-project-id\"\n```\n\n### 3. Add tracking to your tests\n\n**NUnit** - Add one attribute to track all tests:\n```csharp\n[assembly: XpingTrack]\n```\n\n**xUnit** - Add one line to AssemblyInfo.cs:\n```csharp\n[assembly: TestFramework(\"Xping.Sdk.XUnit.XpingTestFramework\", \"Xping.Sdk.XUnit\")]\n```\n\n**MSTest** - Inherit from base class:\n```csharp\n[TestClass]\npublic class MyTests : XpingTestBase { }\n```\n\n### 4. Run your tests\n\nThat's it! Run your tests normally and view insights at [app.xping.io](https://app.xping.io)\n\n### Framework-Specific Guides\n\n- [NUnit Setup Guide](https://docs.xping.io/getting-started/quickstart-nunit.html) - Detailed setup, attributes, and best practices\n- [xUnit Setup Guide](https://docs.xping.io/getting-started/quickstart-xunit.html) - Custom framework configuration and examples\n- [MSTest Setup Guide](https://docs.xping.io/getting-started/quickstart-mstest.html) - Base class usage and TestContext integration\n\n---\n\n## Architecture\n\n### How It Works\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                      Your Test Project                          │\n│  ┌──────────────┐  ┌──────────────┐  ┌───────────────┐          │\n│  │ NUnit Tests  │  │ xUnit Tests  │  │ MSTest Tests  │          │\n│  └──────┬───────┘  └───────┬──────┘  └────────┬──────┘          │\n└─────────┼──────────────────┼──────────────────┼─────────────────┘\n          │                  │                  │\n          ▼                  ▼                  ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                    Test Framework Adapters                      │\n│  ┌──────────────┐  ┌───────────────┐  ┌──────────────┐          │\n│  │ Xping.NUnit  │  │ Xping.XUnit   │  │ Xping.MSTest │          │\n│  └──────┬───────┘  └───────┬───────┘  └───────┬──────┘          │\n└─────────┼──────────────────┼──────────────────┼─────────────────┘\n          │                  │                  │\n          └──────────────────┼──────────────────┘\n                             ▼\n          ┌─────────────────────────────────────┐\n          │         Xping.Sdk.Core              │\n          │                                     │\n          │  • Test Execution Tracking          │\n          │  • Environment Detection            │\n          │  • Configuration Management         │\n          │  • Resilient Upload                 │\n          └──────────────────┬──────────────────┘\n                             ▼\n                    Xping Cloud Platform\n```\n\n---\n\n## Configuration\n\nXping SDK can be configured via **environment variables**, **appsettings.json**, or **programmatically**.\n\n### Environment Variables\n\n```bash\n# Required\nexport XPING_APIKEY=\"your-api-key\"\nexport XPING_PROJECTID=\"your-project-id\"\n\n# Optional\nexport XPING_ENABLED=\"true\"\nexport XPING_BATCHSIZE=\"100\"\n```\n\nSee the [Configuration Reference](https://docs.xping.io/configuration/configuration-reference.html) for complete options including JSON configuration, CI/CD integration examples (GitHub Actions, Azure DevOps, Jenkins), and advanced settings.\n\n---\n\n## What Gets Collected?\n\n### Test Execution Data\n- Test name and fully qualified name\n- Outcome (Passed, Failed, Skipped, etc.)\n- Duration (milliseconds)\n- Start and end timestamps (UTC)\n- Error message and stack trace (for failures)\n- Test categories/traits\n\n### Environment Metadata\n- Operating system and version\n- .NET runtime version\n- Machine name\n- Network metrics (latency, packet loss)\n- CI/CD platform detection\n- Build/branch information (from CI environment)\n\n---\n\n## Privacy \u0026 Security\n\nWe take data privacy seriously. Here's exactly what we collect and don't collect:\n\n### What We DON'T Collect\n- No source code\n- No sensitive data from test assertions\n- No credentials or secrets\n- No personally identifiable information (PII)\n\n### Security Measures\n- **Encryption** - All data transmitted over HTTPS\n- **API Key Security** - Environment variable support (never commit keys to source control)\n- **Data Retention** - Configurable retention policies\n- **Open Source** - Full transparency, [review the code yourself](https://github.com/xping-dev/sdk-dotnet)\n- **Configurable Collection** - Stack traces and sampling are optional\n\n---\n\n## What Problems Does Xping Solve?\n\nXping helps you identify and understand common test reliability issues. The SDK collects test execution data, and the Dashboard analyzes it to detect:\n\n- **Race Conditions** - Tests that fail intermittently due to timing issues\n- **External Service Dependencies** - Tests affected by network or service availability\n- **Shared State Issues** - Tests that interfere with each other\n- **Time-Based Flakiness** - Tests that fail at specific times or dates\n- **Resource Exhaustion** - Tests that leak resources over time\n- **Non-Deterministic Data** - Tests with random or unpredictable data\n\nOnce tests are tracked with the SDK, the [Xping Dashboard](https://app.xping.io) provides:\n- Reliability scores and confidence metrics for each test\n- Automatic flaky test detection with pattern analysis\n- Environment comparison (local vs. CI/CD behavior)\n- Historical trends and performance insights\n\nFor detailed examples of each pattern and how Xping detects them, see the [Common Flaky Patterns Guide](https://docs.xping.io/guides/working-with-tests/common-flaky-patterns.html).\n\n---\n\n## Documentation\n\n**Essential Resources:**\n- [Getting Started Guide](https://docs.xping.io/index.html#quick-start)\n- [Known Limitations](https://docs.xping.io/known-limitations.html)\n- [Troubleshooting](https://docs.xping.io/troubleshooting/common-issues.html)\n- [API Reference](https://docs.xping.io/api/Xping.Sdk.Core.Collection.html)\n\nComplete documentation available at [docs.xping.io](https://docs.xping.io)\n\n---\n\n## Contributing\n\nWe welcome contributions! Whether it's:\n\n- Bug reports\n- Feature requests\n- Documentation improvements\n- Code contributions\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/xping-dev/sdk-dotnet.git\ncd sdk-dotnet\n\n# Restore dependencies\ndotnet restore\n\n# Build\ndotnet build\n\n# Run tests\ndotnet test\n\n# Run with coverage\ndotnet test /p:CollectCoverage=true\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.\n\n---\n\n## Roadmap\n\nCheck our [Milestones](https://github.com/xping-dev/sdk-dotnet/milestones) for planned features:\n\n- [Working Set](https://github.com/xping-dev/sdk-dotnet/milestone/1) - Currently in progress\n- [Backlog](https://github.com/xping-dev/sdk-dotnet/milestone/2) - Future considerations\n\n### Planned Features\n- Enhanced flaky test analytics\n- Test failure categorization (infrastructure vs. code)\n- Multi-language support (Java, Python, JavaScript)\n- Self-hosted deployment option\n\n---\n\n## Support \u0026 Community\n\n- [GitHub Discussions](https://github.com/xping-dev/sdk-dotnet/discussions) - Ask questions, share ideas\n- [Issue Tracker](https://github.com/xping-dev/sdk-dotnet/issues) - Report bugs, request features\n- [Email Support](mailto:support@xping.io) - Direct support\n- [Documentation](https://docs.xping.io) - Comprehensive guides\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003cstrong\u003eBuilt by developers who hate flaky tests\u003c/strong\u003e\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003csub\u003eMade by \u003ca href=\"https://xping.io\"\u003eXping\u003c/a\u003e • Follow us on \u003ca href=\"https://github.com/xping-dev\"\u003eGitHub\u003c/a\u003e\u003c/sub\u003e\n  \u003c/p\u003e\n  \u003cbr /\u003e\n  \u003cp\u003e\n    If Xping helps you build better software, give us a ⭐ on GitHub!\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxping-dev%2Fsdk-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxping-dev%2Fsdk-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxping-dev%2Fsdk-dotnet/lists"}