> ## Documentation Index
> Fetch the complete documentation index at: https://easyaf.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Breakdance - Test Real Things

> No Fakes. No Mocks. A .NET testing framework that eliminates the need for mocking by testing against real infrastructure.

export const CTASection = () => {
  const [animationsStarted, setAnimationsStarted] = React.useState(false);
  React.useEffect(() => {
    setAnimationsStarted(true);
  }, []);
  return <div className="relative bg-[#0d0d1a] py-24 overflow-hidden">
      {}
      <div className="absolute inset-0 opacity-30" style={{
    background: 'radial-gradient(ellipse at 30% 50%, rgba(197, 232, 66, 0.2) 0%, transparent 50%), radial-gradient(ellipse at 70% 50%, rgba(60, 208, 226, 0.2) 0%, transparent 50%)'
  }} />

      {}
      <div className="absolute bottom-0 left-0 right-0 h-24 opacity-10" style={{
    background: '#1a1a2e',
    maskImage: "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 80' preserveAspectRatio='none'%3E%3Cpath d='M0 80 L0 60 L30 60 L30 40 L50 40 L50 60 L80 60 L80 30 L100 30 L100 60 L140 60 L140 45 L160 45 L160 20 L180 20 L180 60 L220 60 L220 50 L260 50 L260 35 L280 35 L280 60 L320 60 L320 40 L340 40 L340 15 L360 15 L360 40 L380 40 L380 60 L420 60 L420 55 L460 55 L460 25 L480 25 L480 60 L520 60 L520 45 L540 45 L540 60 L580 60 L580 35 L600 35 L600 10 L620 10 L620 35 L640 35 L640 60 L680 60 L680 50 L720 50 L720 30 L740 30 L740 60 L780 60 L780 40 L800 40 L800 20 L820 20 L820 60 L860 60 L860 55 L900 55 L900 35 L920 35 L920 60 L960 60 L960 45 L980 45 L980 25 L1000 25 L1000 60 L1040 60 L1040 50 L1080 50 L1080 60 L1120 60 L1120 40 L1140 40 L1140 60 L1200 60 L1200 80 Z' fill='white'/%3E%3C/svg%3E\")",
    maskSize: '100% 100%',
    WebkitMaskImage: "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 80' preserveAspectRatio='none'%3E%3Cpath d='M0 80 L0 60 L30 60 L30 40 L50 40 L50 60 L80 60 L80 30 L100 30 L100 60 L140 60 L140 45 L160 45 L160 20 L180 20 L180 60 L220 60 L220 50 L260 50 L260 35 L280 35 L280 60 L320 60 L320 40 L340 40 L340 15 L360 15 L360 40 L380 40 L380 60 L420 60 L420 55 L460 55 L460 25 L480 25 L480 60 L520 60 L520 45 L540 45 L540 60 L580 60 L580 35 L600 35 L600 10 L620 10 L620 35 L640 35 L640 60 L680 60 L680 50 L720 50 L720 30 L740 30 L740 60 L780 60 L780 40 L800 40 L800 20 L820 20 L820 60 L860 60 L860 55 L900 55 L900 35 L920 35 L920 60 L960 60 L960 45 L980 45 L980 25 L1000 25 L1000 60 L1040 60 L1040 50 L1080 50 L1080 60 L1120 60 L1120 40 L1140 40 L1140 60 L1200 60 L1200 80 Z' fill='white'/%3E%3C/svg%3E\")",
    WebkitMaskSize: '100% 100%'
  }} />

      <div className="relative mx-auto max-w-4xl px-6 lg:px-8 text-center" style={{
    opacity: animationsStarted ? 1 : 0,
    transform: animationsStarted ? 'translateY(0)' : 'translateY(20px)',
    transition: 'opacity 0.8s ease-out, transform 0.8s ease-out'
  }}>
        {}
        <h2 className="text-4xl sm:text-6xl font-black text-white mb-6" style={{
    fontFamily: "'Bebas Neue', sans-serif",
    letterSpacing: '0.02em'
  }}>
          READY TO{' '}
          <span style={{
    background: 'linear-gradient(135deg, #C5E842, #3CD0E2)',
    WebkitBackgroundClip: 'text',
    WebkitTextFillColor: 'transparent'
  }}>
            TEST REAL THINGS
          </span>
          ?
        </h2>

        {}
        <p className="text-xl text-gray-400 mb-10 max-w-2xl mx-auto leading-relaxed">
          Join developers who have eliminated mocking from their test suites.
          Your tests will be faster, more reliable, and actually mean something.
        </p>

        {}
        <div className="flex flex-col sm:flex-row items-center justify-center gap-4">
          <a href="/guides/index" className="group relative px-10 py-5 bg-[#C5E842] text-[#0a0a14] font-bold text-lg rounded-xl overflow-hidden transition-all duration-300 hover:scale-105 shadow-[0_0_40px_rgba(197,232,66,0.3)]" style={{
    fontFamily: "'DM Sans', sans-serif"
  }}>
            <span className="relative z-10 flex items-center gap-2">
              Explore the Guides
              <svg className="w-5 h-5 transition-transform group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 7l5 5m0 0l-5 5m5-5H6" />
              </svg>
            </span>
          </a>
          <a href="/api-reference/CloudNimble/Breakdance/Assemblies/index" className="px-10 py-5 border-2 border-[#3CD0E2] text-[#3CD0E2] font-bold text-lg rounded-xl transition-all duration-300 hover:bg-[#3CD0E2] hover:text-[#0a0a14]" style={{
    fontFamily: "'DM Sans', sans-serif"
  }}>
            API Reference
          </a>
        </div>

        {}
        <div className="mt-16 grid grid-cols-3 gap-8 max-w-lg mx-auto">
          {[{
    value: '6',
    label: 'Packages'
  }, {
    value: '10+',
    label: '.NET Versions'
  }, {
    value: '0',
    label: 'Mocks Required'
  }].map((stat, i) => <div key={i} className="text-center">
              <div className="text-3xl font-black mb-1" style={{
    fontFamily: "'Bebas Neue', sans-serif",
    color: i === 2 ? '#C5E842' : 'white'
  }}>
                {stat.value}
              </div>
              <div className="text-xs text-gray-500 uppercase tracking-wider">
                {stat.label}
              </div>
            </div>)}
        </div>
      </div>
    </div>;
};

export const QuickStart = () => {
  const [animationsStarted, setAnimationsStarted] = React.useState(false);
  React.useEffect(() => {
    setAnimationsStarted(true);
  }, []);
  const steps = [{
    number: '01',
    title: 'Install',
    description: 'Add the core package to your test project',
    code: 'dotnet add package Breakdance.Assemblies'
  }, {
    number: '02',
    title: 'Capture',
    description: 'Record real responses from actual APIs',
    code: 'var handler = new ResponseSnapshotCaptureHandler("Snapshots") {\n    InnerHandler = new HttpClientHandler()\n};\nvar client = new HttpClient(handler);\nawait client.GetAsync("https://api.example.com/users");\n// Response saved to Snapshots/api.example.com/users.json'
  }, {
    number: '03',
    title: 'Replay',
    description: 'Use captured responses in your tests',
    code: '[TestMethod]\npublic async Task GetUsers_ReturnsExpectedData()\n{\n    var handler = new ResponseSnapshotReplayHandler("Snapshots");\n    var client = new HttpClient(handler);\n\n    var response = await client.GetAsync("https://api.example.com/users");\n\n    response.IsSuccessStatusCode.Should().BeTrue();\n}'
  }, {
    number: '04',
    title: 'Commit',
    description: 'Check snapshots into source control',
    code: 'git add Snapshots/\ngit commit -m "Add API response snapshots"\n# Now your entire team can run tests without API access'
  }];
  return <div className="relative bg-[#0a0a14] py-20">
      <div className="mx-auto max-w-7xl px-6 lg:px-8" style={{
    opacity: animationsStarted ? 1 : 0,
    transform: animationsStarted ? 'translateY(0)' : 'translateY(20px)',
    transition: 'opacity 0.8s ease-out, transform 0.8s ease-out'
  }}>
        {}
        <div className="text-center mb-16">
          <h2 className="text-4xl sm:text-5xl font-black text-white mb-4" style={{
    fontFamily: "'Bebas Neue', sans-serif",
    letterSpacing: '0.02em'
  }}>
            START IN MINUTES
          </h2>
          <p className="text-gray-400 text-lg max-w-2xl mx-auto">
            Four steps to testing real things
          </p>
        </div>

        {}
        <div className="space-y-8">
          {steps.map((step, index) => <div key={index} className="relative flex flex-col lg:flex-row gap-6 items-start">
              {}
              <div className="flex-shrink-0 flex items-center gap-4 lg:w-48">
                <span className="text-5xl font-black" style={{
    fontFamily: "'Bebas Neue', sans-serif",
    background: 'linear-gradient(135deg, #C5E842, #3CD0E2)',
    WebkitBackgroundClip: 'text',
    WebkitTextFillColor: 'transparent'
  }}>
                  {step.number}
                </span>
                <div>
                  <h3 className="text-xl font-bold text-white" style={{
    fontFamily: "'DM Sans', sans-serif"
  }}>
                    {step.title}
                  </h3>
                  <p className="text-sm text-gray-500">{step.description}</p>
                </div>
              </div>

              {}
              {index < steps.length - 1 && <div className="hidden lg:block absolute left-[1.75rem] top-16 w-0.5 h-8" style={{
    background: 'linear-gradient(to bottom, #C5E842, transparent)'
  }} />}

              {}
              <div className="flex-1 w-full">
                <div className="bg-[#1a1a2e] rounded-xl border border-gray-800 overflow-hidden">
                  <div className="flex items-center gap-2 px-4 py-2 border-b border-gray-800">
                    <div className="w-3 h-3 rounded-full bg-red-500/60" />
                    <div className="w-3 h-3 rounded-full bg-yellow-500/60" />
                    <div className="w-3 h-3 rounded-full bg-green-500/60" />
                  </div>
                  <pre className="p-4 overflow-x-auto">
                    <code className="text-sm font-mono text-gray-300">{step.code}</code>
                  </pre>
                </div>
              </div>
            </div>)}
        </div>
      </div>
    </div>;
};

export const PackageShowcase = () => {
  const [animationsStarted, setAnimationsStarted] = React.useState(false);
  React.useEffect(() => {
    setAnimationsStarted(true);
  }, []);
  const packages = [{
    name: 'Breakdance.Assemblies',
    description: 'Core testing base classes, DI management, response snapshots, public API analysis',
    icon: '🎯',
    primary: true
  }, {
    name: 'Breakdance.AspNetCore',
    description: 'In-memory TestServer for ASP.NET Core with full DI support',
    icon: '⚡'
  }, {
    name: 'Breakdance.WebApi',
    description: 'In-memory testing for ASP.NET Web API 2 on .NET Framework',
    icon: '🏛️'
  }, {
    name: 'Breakdance.DotHttp',
    description: '.http file parsing, variables, chaining, and environment configs',
    icon: '📄'
  }, {
    name: 'Breakdance.Azurite',
    description: 'Azure Storage testing with Blob, Queue, and Table support',
    icon: '☁️'
  }, {
    name: 'Breakdance.Blazor',
    description: 'Blazor component testing with bUnit integration',
    icon: '🔥'
  }];
  return <div className="relative bg-[#0d0d1a] py-20 overflow-hidden">
      {}
      <div className="absolute inset-0 opacity-10">
        {[...Array(5)].map((_, i) => <div key={i} className="absolute h-px bg-gradient-to-r from-transparent via-[#3CD0E2] to-transparent" style={{
    top: 20 + i * 20 + '%',
    left: '0',
    right: '0'
  }} />)}
      </div>

      <div className="relative mx-auto max-w-7xl px-6 lg:px-8" style={{
    opacity: animationsStarted ? 1 : 0,
    transform: animationsStarted ? 'translateY(0)' : 'translateY(20px)',
    transition: 'opacity 0.8s ease-out, transform 0.8s ease-out'
  }}>
        {}
        <div className="text-center mb-16">
          <h2 className="text-4xl sm:text-5xl font-black text-white mb-4" style={{
    fontFamily: "'Bebas Neue', sans-serif",
    letterSpacing: '0.02em'
  }}>
            THE BREAKDANCE FAMILY
          </h2>
          <p className="text-gray-400 text-lg max-w-2xl mx-auto">
            Install only what you need. Each package is focused and lightweight.
          </p>
        </div>

        {}
        <div className="max-w-2xl mx-auto mb-12">
          <div className="bg-[#1a1a2e] rounded-xl p-4 border border-gray-800">
            <div className="flex items-center gap-2 mb-2">
              <div className="w-3 h-3 rounded-full bg-red-500/80" />
              <div className="w-3 h-3 rounded-full bg-yellow-500/80" />
              <div className="w-3 h-3 rounded-full bg-green-500/80" />
              <span className="ml-2 text-xs text-gray-500 font-mono">terminal</span>
            </div>
            <code className="text-[#C5E842] font-mono text-sm sm:text-base">
              dotnet add package Breakdance.Assemblies
            </code>
          </div>
        </div>

        {}
        <div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-4">
          {packages.map((pkg, index) => <div key={index} className={'relative group rounded-xl p-5 border transition-all duration-300 hover:-translate-y-1 ' + (pkg.primary ? 'bg-gradient-to-br from-[#C5E842]/10 to-[#3CD0E2]/10 border-[#C5E842]/30' : 'bg-[#1a1a2e]/50 border-gray-800 hover:border-gray-700')}>
              {pkg.primary && <div className="absolute -top-2 -right-2 px-2 py-0.5 bg-[#C5E842] text-[#0a0a14] text-xs font-bold rounded-full">
                  CORE
                </div>}

              <div className="flex items-start gap-4">
                <span className="text-2xl">{pkg.icon}</span>
                <div className="flex-1 min-w-0">
                  <h3 className="font-mono text-sm font-bold text-white mb-1 truncate" style={{
    color: pkg.primary ? '#C5E842' : 'white'
  }}>
                    {pkg.name}
                  </h3>
                  <p className="text-xs text-gray-400 leading-relaxed">
                    {pkg.description}
                  </p>
                </div>
              </div>
            </div>)}
        </div>

        {}
        <div className="mt-12 text-center">
          <p className="text-sm text-gray-500 mb-4">Supports</p>
          <div className="flex flex-wrap items-center justify-center gap-3">
            {['.NET 4.8', '.NET Standard 2.0', '.NET 6', '.NET 8', '.NET 9', '.NET 10'].map((platform, i) => <span key={i} className="px-3 py-1 bg-[#1a1a2e] border border-gray-800 rounded-full text-xs font-mono text-gray-400">
                {platform}
              </span>)}
          </div>
        </div>
      </div>
    </div>;
};

export const FeatureGrid = () => {
  const [animationsStarted, setAnimationsStarted] = React.useState(false);
  React.useEffect(() => {
    setAnimationsStarted(true);
  }, []);
  const features = [{
    icon: <svg className="w-7 h-7" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" />
        </svg>,
    title: 'Response Snapshots',
    description: 'Capture real HTTP responses and replay them instantly. No network, no rate limits, works offline.',
    href: '/guides/web/snapshots/responses',
    color: '#C5E842'
  }, {
    icon: <svg className="w-7 h-7" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
        </svg>,
    title: 'Request Snapshots',
    description: "Define API requests in Visual Studio's .http format. Variables, chaining, and environment configs built-in.",
    href: '/guides/web/snapshots/requests',
    color: '#3CD0E2'
  }, {
    icon: <svg className="w-7 h-7" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2" />
        </svg>,
    title: 'In-Memory TestServer',
    description: 'Run your actual ASP.NET pipeline in-memory. Same DI container, same middleware, same behavior.',
    href: '/guides/web/aspnet-core-rest',
    color: '#C5E842'
  }, {
    icon: <svg className="w-7 h-7" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z" />
        </svg>,
    title: 'DI Container Testing',
    description: 'Full IHost management with GetService<T>, scoped services, keyed services (.NET 8+), and container diagnostics.',
    href: '/api-reference/CloudNimble/Breakdance/Assemblies/BreakdanceTestBase',
    color: '#3CD0E2'
  }, {
    icon: <svg className="w-7 h-7" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01" />
        </svg>,
    title: 'Public API Analysis',
    description: 'Generate API surface reports, detect breaking changes before release with TypeDefinition mappings.',
    href: '/api-reference/CloudNimble/Breakdance/Assemblies/PublicApiHelpers',
    color: '#C5E842'
  }, {
    icon: <svg className="w-7 h-7" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z" />
        </svg>,
    title: 'Identity & Claims',
    description: 'Test authorization without complex identity setup. SetThreadPrincipal and claims management built-in.',
    href: '/api-reference/CloudNimble/Breakdance/Assemblies/BreakdanceTestBase',
    color: '#3CD0E2'
  }, {
    icon: <svg className="w-7 h-7" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" />
        </svg>,
    title: 'Private Member Access',
    description: 'PrivateObject and PrivateType classes let you test implementation details when needed.',
    href: '/api-reference/CloudNimble/Breakdance/Assemblies/PrivateObject',
    color: '#C5E842'
  }, {
    icon: <svg className="w-7 h-7" fill="none" viewBox="0 0 24 24" stroke="currentColor">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M3 15a4 4 0 004 4h9a5 5 0 10-.1-9.999 5.002 5.002 0 10-9.78 2.096A4.001 4.001 0 003 15z" />
        </svg>,
    title: 'Azure Storage Testing',
    description: 'Test against real Azurite - actual Azure Storage API, not mocks. Blob, Queue, and Table support.',
    href: '/guides/testing-azure-storage',
    color: '#3CD0E2'
  }];
  return <div className="relative bg-[#0a0a14] py-20">
      {}
      <div className="absolute top-0 left-1/2 -translate-x-1/2 w-3/4 h-px" style={{
    background: 'linear-gradient(90deg, transparent, #C5E842, #3CD0E2, transparent)'
  }} />

      <div className="mx-auto max-w-7xl px-6 lg:px-8" style={{
    opacity: animationsStarted ? 1 : 0,
    transform: animationsStarted ? 'translateY(0)' : 'translateY(20px)',
    transition: 'opacity 0.8s ease-out, transform 0.8s ease-out'
  }}>
        {}
        <div className="text-center mb-16">
          <h2 className="text-4xl sm:text-5xl font-black text-white mb-4" style={{
    fontFamily: "'Bebas Neue', sans-serif",
    letterSpacing: '0.02em'
  }}>
            EVERYTHING YOU NEED
          </h2>
          <p className="text-gray-400 text-lg max-w-2xl mx-auto">
            A complete toolkit for testing real behavior across your .NET applications
          </p>
        </div>

        {}
        <div className="grid sm:grid-cols-2 lg:grid-cols-4 gap-6">
          {features.map((feature, index) => <a key={index} href={feature.href} className="group relative bg-[#1a1a2e]/50 rounded-2xl p-6 border border-gray-800 hover:border-gray-700 transition-all duration-300 hover:-translate-y-1">
              {}
              <div className="absolute inset-0 rounded-2xl opacity-0 group-hover:opacity-100 transition-opacity duration-300 -z-10 blur-xl" style={{
    background: feature.color + '10'
  }} />

              {}
              <div className="w-14 h-14 rounded-xl flex items-center justify-center mb-4 transition-transform duration-300 group-hover:scale-110" style={{
    background: feature.color + '15',
    color: feature.color
  }}>
                {feature.icon}
              </div>

              {}
              <h3 className="text-lg font-bold text-white mb-2 group-hover:text-[#C5E842] transition-colors" style={{
    fontFamily: "'DM Sans', sans-serif"
  }}>
                {feature.title}
              </h3>
              <p className="text-sm text-gray-400 leading-relaxed">
                {feature.description}
              </p>

              {}
              <div className="mt-4 flex items-center text-sm font-medium" style={{
    color: feature.color
  }}>
                <span className="opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300">
                  Learn more
                </span>
              </div>
            </a>)}
        </div>
      </div>
    </div>;
};

export const MockVsReal = () => {
  const [animationsStarted, setAnimationsStarted] = React.useState(false);
  React.useEffect(() => {
    setAnimationsStarted(true);
  }, []);
  return <div className="relative bg-[#0d0d1a] py-20 overflow-hidden">
      {}
      <div className="absolute inset-0 opacity-5" style={{
    backgroundImage: 'url("data:image/svg+xml,%3Csvg width=\'60\' height=\'60\' viewBox=\'0 0 60 60\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cg fill=\'none\' fill-rule=\'evenodd\'%3E%3Cg fill=\'%23ffffff\' fill-opacity=\'1\'%3E%3Cpath d=\'M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z\'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")'
  }} />

      <div className="relative mx-auto max-w-7xl px-6 lg:px-8" style={{
    opacity: animationsStarted ? 1 : 0,
    transform: animationsStarted ? 'translateY(0)' : 'translateY(20px)',
    transition: 'opacity 0.8s ease-out, transform 0.8s ease-out'
  }}>
        {}
        <div className="text-center mb-16">
          <h2 className="text-4xl sm:text-5xl font-black text-white mb-4" style={{
    fontFamily: "'Bebas Neue', sans-serif",
    letterSpacing: '0.02em'
  }}>
            THE PROBLEM WITH MOCKING
          </h2>
          <p className="text-gray-400 text-lg max-w-2xl mx-auto">
            Your tests pass in a universe that doesn't exist
          </p>
        </div>

        {}
        <div className="grid md:grid-cols-2 gap-8 lg:gap-12">
          {}
          <div className="relative group">
            <div className="absolute -inset-1 bg-gradient-to-r from-red-500/20 to-orange-500/20 rounded-2xl blur-xl opacity-50 group-hover:opacity-75 transition-opacity" />
            <div className="relative bg-[#1a1a2e] rounded-2xl p-8 border border-red-500/20">
              {}
              <div className="flex items-center gap-3 mb-6">
                <div className="w-12 h-12 rounded-xl bg-red-500/10 flex items-center justify-center">
                  <svg className="w-6 h-6 text-red-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                    <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636" />
                  </svg>
                </div>
                <div>
                  <h3 className="text-xl font-bold text-red-400" style={{
    fontFamily: "'DM Sans', sans-serif"
  }}>
                    The Mock Way
                  </h3>
                  <p className="text-sm text-gray-500">Imagination codified</p>
                </div>
              </div>

              {}
              <div className="bg-[#0a0a14] rounded-xl p-4 mb-6 font-mono text-sm overflow-x-auto">
                <pre className="text-gray-300">
                  <code>{'var mockService = new Mock<IUserService>();\nmockService.Setup(x => x.GetUser(It.IsAny<int>()))\n    .Returns(new User { Id = 1, Name = "Test" });\n\n// Does this match reality?\n// What about edge cases?\n// API changed last week?\n\nvar result = await controller.GetUser(1);\nAssert.IsNotNull(result); // Passes... but means nothing'}</code>
                </pre>
              </div>

              {}
              <ul className="space-y-3">
                {['Constant maintenance as APIs evolve', 'Edge cases easily missed', 'Tests pass, production fails', 'Mock behavior != real behavior'].map((problem, i) => <li key={i} className="flex items-start gap-3 text-gray-400">
                    <svg className="w-5 h-5 text-red-400 mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                      <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
                    </svg>
                    <span>{problem}</span>
                  </li>)}
              </ul>
            </div>
          </div>

          {}
          <div className="relative group">
            <div className="absolute -inset-1 bg-gradient-to-r from-[#C5E842]/20 to-[#3CD0E2]/20 rounded-2xl blur-xl opacity-50 group-hover:opacity-75 transition-opacity" />
            <div className="relative bg-[#1a1a2e] rounded-2xl p-8 border border-[#C5E842]/20">
              {}
              <div className="flex items-center gap-3 mb-6">
                <div className="w-12 h-12 rounded-xl bg-[#C5E842]/10 flex items-center justify-center">
                  <svg className="w-6 h-6 text-[#C5E842]" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                    <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
                  </svg>
                </div>
                <div>
                  <h3 className="text-xl font-bold text-[#C5E842]" style={{
    fontFamily: "'DM Sans', sans-serif"
  }}>
                    The Breakdance Way
                  </h3>
                  <p className="text-sm text-gray-500">Reality captured</p>
                </div>
              </div>

              {}
              <div className="bg-[#0a0a14] rounded-xl p-4 mb-6 font-mono text-sm overflow-x-auto">
                <pre className="text-gray-300">
                  <code>{'// Capture real API response once\nvar capture = new ResponseSnapshotCaptureHandler("Snapshots");\nawait client.GetAsync("https://api.example.com/users/1");\n// Real response saved to disk\n\n// Replay in all future tests - fast & deterministic\nvar replay = new ResponseSnapshotReplayHandler("Snapshots");\nvar response = await testClient.GetAsync("/users/1");\n// Exact response from real API'}</code>
                </pre>
              </div>

              {}
              <ul className="space-y-3">
                {['Test against actual API responses', 'Edge cases naturally captured', 'API changes surface immediately', 'Same code paths as production'].map((benefit, i) => <li key={i} className="flex items-start gap-3 text-gray-400">
                    <svg className="w-5 h-5 text-[#C5E842] mt-0.5 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                      <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
                    </svg>
                    <span>{benefit}</span>
                  </li>)}
              </ul>
            </div>
          </div>
        </div>
      </div>
    </div>;
};

export const HeroSection = () => {
  const [animationsStarted, setAnimationsStarted] = React.useState(false);
  React.useEffect(() => {
    setAnimationsStarted(true);
  }, []);
  return <div className="relative overflow-hidden py-20 sm:py-28" style={{
    background: 'linear-gradient(135deg, #0a0a14 0%, #0d1117 50%, #0a0a14 100%)'
  }}>
      {}
      <div className="absolute top-0 left-1/4 w-96 h-96 rounded-full blur-3xl" style={{
    background: 'rgba(197, 232, 66, 0.08)'
  }} />
      <div className="absolute bottom-0 right-1/4 w-96 h-96 rounded-full blur-3xl" style={{
    background: 'rgba(60, 208, 226, 0.08)'
  }} />
      <div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] rounded-full blur-3xl" style={{
    background: 'rgba(65, 154, 197, 0.05)'
  }} />

      {}
      <div className="absolute inset-0 opacity-[0.03]" style={{
    backgroundImage: 'linear-gradient(rgba(197, 232, 66, 0.5) 1px, transparent 1px), linear-gradient(90deg, rgba(197, 232, 66, 0.5) 1px, transparent 1px)',
    backgroundSize: '50px 50px'
  }} />

      {}
      <div className="absolute inset-0 overflow-hidden">
        <div className="absolute -top-10 -right-10 w-80 h-1" style={{
    background: 'linear-gradient(90deg, transparent, #C5E842, transparent)',
    transform: 'rotate(-35deg)',
    boxShadow: '0 0 40px 2px rgba(197, 232, 66, 0.4)'
  }} />
        <div className="absolute top-20 -right-20 w-96 h-0.5" style={{
    background: 'linear-gradient(90deg, transparent, #3CD0E2, transparent)',
    transform: 'rotate(-35deg)',
    boxShadow: '0 0 30px 2px rgba(60, 208, 226, 0.3)'
  }} />
        <div className="absolute top-40 -right-10 w-64 h-0.5" style={{
    background: 'linear-gradient(90deg, transparent, #C5E842, transparent)',
    transform: 'rotate(-35deg)',
    opacity: 0.5
  }} />
      </div>

      {}
      <svg className="absolute bottom-0 left-0 right-0 w-full h-24" viewBox="0 0 1200 100" preserveAspectRatio="none" style={{
    opacity: 0.15
  }}>
        <defs>
          <linearGradient id="skylineGradient" x1="0%" y1="0%" x2="0%" y2="100%">
            <stop offset="0%" stopColor="#3CD0E2" stopOpacity="0.5" />
            <stop offset="100%" stopColor="#1a1a2e" stopOpacity="1" />
          </linearGradient>
        </defs>
        <path d="M0 100 L0 70 L30 70 L30 50 L50 50 L50 70 L80 70 L80 35 L100 35 L100 70 L130 70 L130 55 L150 55 L150 25 L170 25 L170 70 L200 70 L200 60 L240 60 L240 40 L260 40 L260 70 L300 70 L300 45 L320 45 L320 20 L340 20 L340 45 L360 45 L360 70 L400 70 L400 55 L430 55 L430 30 L450 30 L450 10 L470 10 L470 30 L490 30 L490 70 L530 70 L530 50 L560 50 L560 35 L580 35 L580 70 L620 70 L620 60 L650 60 L650 40 L670 40 L670 15 L690 15 L690 40 L710 40 L710 70 L750 70 L750 55 L790 55 L790 35 L810 35 L810 70 L850 70 L850 50 L870 50 L870 25 L890 25 L890 5 L910 5 L910 25 L930 25 L930 70 L970 70 L970 60 L1010 60 L1010 45 L1030 45 L1030 70 L1070 70 L1070 55 L1090 55 L1090 30 L1110 30 L1110 70 L1150 70 L1150 50 L1170 50 L1170 70 L1200 70 L1200 100 Z" fill="url(#skylineGradient)" />
      </svg>

      {}
      <div className="relative mx-auto max-w-6xl px-6 lg:px-8" style={{
    opacity: animationsStarted ? 1 : 0,
    transform: animationsStarted ? 'translateY(0)' : 'translateY(20px)',
    transition: 'opacity 0.8s ease-out, transform 0.8s ease-out'
  }}>
        <div className="flex flex-col items-center text-center">

          {}
          <div className="mb-10">
            <img src="/breakdance-logo.png" alt="Breakdance" className="h-40 sm:h-48 w-auto" style={{
    filter: 'drop-shadow(0 0 40px rgba(197, 232, 66, 0.4)) drop-shadow(0 0 80px rgba(60, 208, 226, 0.2))'
  }} />
          </div>

          {}
          <h1 className="text-6xl sm:text-8xl lg:text-9xl font-black tracking-tight mb-8" style={{
    fontFamily: "'Bebas Neue', 'Impact', sans-serif",
    letterSpacing: '0.03em',
    textShadow: '0 0 80px rgba(197, 232, 66, 0.3)'
  }}>
            <span style={{
    color: '#ffffff'
  }}>TEST </span>
            <span style={{
    color: '#C5E842',
    textShadow: '0 0 60px rgba(197, 232, 66, 0.6), 0 0 120px rgba(197, 232, 66, 0.3)'
  }}>
              REAL
            </span>
            <span style={{
    color: '#ffffff'
  }}> THINGS</span>
          </h1>

          {}
          <div className="flex flex-wrap items-center justify-center gap-3 sm:gap-4 mb-10" style={{
    fontFamily: "'JetBrains Mono', 'Consolas', monospace"
  }}>
            <span className="text-xl sm:text-2xl lg:text-3xl font-bold px-4 py-2 rounded-lg" style={{
    color: '#C5E842',
    background: 'rgba(197, 232, 66, 0.1)',
    border: '1px solid rgba(197, 232, 66, 0.2)'
  }}>
              No Fakes.
            </span>
            <span className="text-2xl sm:text-3xl text-gray-600 font-light">//</span>
            <span className="text-xl sm:text-2xl lg:text-3xl font-bold px-4 py-2 rounded-lg" style={{
    color: '#3CD0E2',
    background: 'rgba(60, 208, 226, 0.1)',
    border: '1px solid rgba(60, 208, 226, 0.2)'
  }}>
              No Mocks.
            </span>
            <span className="text-2xl sm:text-3xl text-gray-600 font-light">//</span>
            <span className="text-xl sm:text-2xl lg:text-3xl font-bold px-4 py-2 rounded-lg" style={{
    color: '#ffffff',
    background: 'rgba(255, 255, 255, 0.05)',
    border: '1px solid rgba(255, 255, 255, 0.1)'
  }}>
              Ever.
            </span>
          </div>

          {}
          <p className="text-lg sm:text-xl text-gray-400 max-w-3xl mb-12 leading-relaxed" style={{
    fontFamily: "'DM Sans', system-ui, sans-serif"
  }}>
            A .NET testing framework that captures real behavior instead of imagining it.
            Test against actual HTTP responses, real infrastructure, and the same code paths production uses.
          </p>

          {}
          <div className="flex flex-col sm:flex-row items-center justify-center gap-4 sm:gap-6">
            <a href="/guides/index" className="group relative px-10 py-5 text-xl font-bold rounded-xl overflow-hidden transition-all duration-300 hover:scale-105" style={{
    fontFamily: "'DM Sans', sans-serif",
    background: '#C5E842',
    color: '#0a0a14',
    boxShadow: '0 0 40px rgba(197, 232, 66, 0.4)'
  }}>
              <span className="relative z-10">Get Started</span>
              <div className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300" style={{
    background: 'linear-gradient(135deg, #C5E842, #3CD0E2)'
  }} />
            </a>
            <a href="/why-breakdance" className="px-10 py-5 text-xl font-bold rounded-xl transition-all duration-300 hover:scale-105" style={{
    fontFamily: "'DM Sans', sans-serif",
    color: '#3CD0E2',
    border: '2px solid #3CD0E2',
    background: 'rgba(60, 208, 226, 0.05)'
  }}>
              Why Breakdance? →
            </a>
          </div>

        </div>
      </div>

      {}
      <div className="absolute bottom-0 left-0 right-0 h-32 pointer-events-none" style={{
    background: 'linear-gradient(to top, #0d0d1a 0%, transparent 100%)'
  }} />
    </div>;
};

<div className="custom-mode">
  <HeroSection />

  <MockVsReal />

  <FeatureGrid />

  <QuickStart />

  <PackageShowcase />

  <CTASection />
</div>
