Skip to content

Commit 11bc167

Browse files
moosebayclaude
andcommitted
SEO overhaul: update copy, add feature pages, load testing waitlist, footer nav
- Update homepage H1, sub-headline, badges, meta title/description - Update "How it works" section header and 4 step titles for API testing keywords - Update comparison and roadmap section copy - Update /flows/, /postman-alternative/, /cli/ page meta and copy - Add "Why developers are switching from Postman" section - Create /features/multi-step-api-testing/ with flow screenshot, FAQ schema - Create /features/ci-cd-integration/ with pipeline examples, FAQ schema - Create /load-testing/ waitlist page with demo request form - Add images to generate-har-chrome guide (replace TODO placeholders) - Reorganize footer into 4 columns: Product, Features, Compare, Company - Add internal cross-links across feature pages, CLI, flows, comparison - Enhance SoftwareApplication schema with downloadUrl and offers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 1a7c306 commit 11bc167

16 files changed

Lines changed: 1231 additions & 107 deletions

File tree

app/cli/page.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import CodeBlock from '@/components/ui/CodeBlock'
33
import CommandCard from '@/components/cli/CommandCard'
44

55
export const metadata = {
6-
title: 'DevTools CLI – Run YAML API workflows in CI (JUnit/JSON, exit codes)',
7-
description: 'Run exported YAML flows in parallel with a Go runner. Get JUnit/JSON reports and clean exit codes designed for pipelines.',
6+
title: 'DevTools CLI – Run Multi-Step API Tests in CI/CD Pipelines',
7+
description: 'Run multi-step API tests in CI with a Go-based CLI. Parallel execution, JUnit/JSON reports, clean exit codes. Works with GitHub Actions, GitLab CI, Jenkins, and any pipeline.',
88
}
99

1010
export default function CLIPage() {
@@ -161,9 +161,9 @@ export default function CLIPage() {
161161
{/* CTA Section */}
162162
<section className="relative border-t border-white/5 bg-[linear-gradient(160deg,rgba(12,22,51,0.55),rgba(42,27,78,0.4))] py-16">
163163
<div className="mx-auto w-full max-w-4xl px-4 text-center sm:px-8">
164-
<h2 className="text-3xl font-bold text-white sm:text-4xl">Ready to run flows in CI?</h2>
164+
<h2 className="text-3xl font-bold text-white sm:text-4xl">Ready to run API tests in CI?</h2>
165165
<p className="mt-4 text-lg text-slate-300">
166-
Install DevTools CLI and integrate with GitHub Actions, GitLab CI, Jenkins, or any pipeline.
166+
Install DevTools CLI and run multi-step API tests in GitHub Actions, GitLab CI, Jenkins, or any pipeline.
167167
</p>
168168
<div className="mt-8 flex flex-wrap items-center justify-center gap-4">
169169
<Link
@@ -179,6 +179,11 @@ export default function CLIPage() {
179179
View CI Templates
180180
</Link>
181181
</div>
182+
<div className="mt-6 flex flex-wrap justify-center gap-x-4 gap-y-1 text-sm text-slate-400">
183+
<Link href="/features/ci-cd-integration" className="underline decoration-dotted underline-offset-2 hover:text-neon">API testing in CI/CD →</Link>
184+
<Link href="/features/multi-step-api-testing" className="underline decoration-dotted underline-offset-2 hover:text-neon">Multi-step API testing →</Link>
185+
<Link href="/guides/api-testing-ci-cd" className="underline decoration-dotted underline-offset-2 hover:text-neon">CI/CD guide →</Link>
186+
</div>
182187
</div>
183188
</section>
184189
</main>

app/features/ci-cd-integration/page.tsx

Lines changed: 373 additions & 0 deletions
Large diffs are not rendered by default.

app/features/multi-step-api-testing/page.tsx

Lines changed: 439 additions & 0 deletions
Large diffs are not rendered by default.

app/flows/page.tsx

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import Flows from '@/components/home/Flows'
22

33
export const metadata = {
4-
title: 'DevTools Flows – Visual API Workflows from HAR to YAML',
4+
title: 'Multi-Step API Testing Flows – Chain Requests, Map Variables, Export YAML',
55
description:
6-
'See how DevTools turns real traffic (HAR) into visual API flows with variable mapping and YAML export for CI.',
6+
'Build multi-step API test flows that chain requests with auto-mapped variables. Import real traffic, add assertions, and export YAML for CI/CD pipelines.',
77
}
88

99
export default function FlowsPage() {
1010
return (
1111
<main className="relative">
1212
<div className="mx-auto max-w-6xl px-4 py-10 sm:px-8">
13-
<h1 className="text-4xl font-extrabold text-white">Flows</h1>
13+
<h1 className="text-4xl font-extrabold text-white">Multi-Step API Testing Flows</h1>
1414
<p className="mt-3 max-w-3xl text-slate-300">
15-
DevTools generates deployable API workflows from your real browser traffic. Import a HAR, map variables, and export
16-
YAML for review and CI runs.
15+
Build multi-step API tests that chain requests with auto-mapped variables. Import real browser traffic, add assertions
16+
between steps, and export YAML for Git review and CI/CD pipelines.
1717
</p>
1818
</div>
1919
<Flows />
@@ -22,6 +22,16 @@ export default function FlowsPage() {
2222
<div className="rounded-2xl border border-white/10 bg-white/5 p-6">
2323
<h2 className="text-2xl font-semibold text-white">Learn more</h2>
2424
<ul className="mt-3 list-disc space-y-2 pl-5 text-slate-300">
25+
<li>
26+
<a className="underline decoration-dotted underline-offset-2" href="/features/multi-step-api-testing">
27+
Multi-step API testing
28+
</a>
29+
</li>
30+
<li>
31+
<a className="underline decoration-dotted underline-offset-2" href="/features/ci-cd-integration">
32+
API testing in CI/CD pipelines
33+
</a>
34+
</li>
2535
<li>
2636
<a className="underline decoration-dotted underline-offset-2" href="/docs/how-to/import-har">
2737
How to import a HAR
@@ -37,6 +47,11 @@ export default function FlowsPage() {
3747
DevTools CLI reference
3848
</a>
3949
</li>
50+
<li>
51+
<a className="underline decoration-dotted underline-offset-2" href="/guides/end-to-end-api-testing">
52+
End-to-end API testing guide
53+
</a>
54+
</li>
4055
</ul>
4156
</div>
4257
</div>

app/guides/generate-har-chrome/page.jsx

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,12 @@ export default function GuideGenerateHarChrome() {
7575
<li>Right click → Inspect</li>
7676
<li>Open the Network panel</li>
7777
</ul>
78-
{/* TODO: screenshot → /public/media/chrome-network-tab.png
79-
Alt: Chrome DevTools Network tab open */}
78+
<img
79+
src="/docs/assets/chrome-devtools-open-settings-gear.webp"
80+
alt="Open DevTools settings from the Network panel toolbar"
81+
className="mt-4 rounded-lg border border-white/10"
82+
loading="lazy"
83+
/>
8084
</div>
8185
</div>
8286
</div>
@@ -90,8 +94,12 @@ export default function GuideGenerateHarChrome() {
9094
<li>Network toolbar → gear icon</li>
9195
<li>Preferences → Network → Allow to generate HAR with sensitive data</li>
9296
</ul>
93-
{/* TODO: screenshot → /public/media/chrome-allow-har-sensitive-data.png
94-
Alt: Chrome setting 'Allow to generate HAR with sensitive data' enabled */}
97+
<img
98+
src="/docs/assets/chrome-devtools-allow-har-with-sensitive-data.webp"
99+
alt="Enable 'Allow to generate HAR with sensitive data' in Chrome DevTools preferences"
100+
className="mt-4 rounded-lg border border-white/10"
101+
loading="lazy"
102+
/>
95103
</div>
96104
</div>
97105
</div>
@@ -107,8 +115,6 @@ export default function GuideGenerateHarChrome() {
107115
<li>Click the clear icon to start clean</li>
108116
<li>Perform the workflow (login, click, submit, etc.)</li>
109117
</ul>
110-
{/* TODO: GIF → /public/media/chrome-preserve-log-clear.gif
111-
Alt: Chrome Network: Preserve log and Clear, then capturing a user flow */}
112118
</div>
113119
</div>
114120
</div>
@@ -123,8 +129,12 @@ export default function GuideGenerateHarChrome() {
123129
<li>Or right‑click request list → Save all as HAR with content</li>
124130
</ul>
125131
<p className="text-slate-400 text-sm mt-2">Suggested names: login-create-order.har, checkout-flow.har</p>
126-
{/* TODO: screenshot → /public/media/chrome-save-har-with-content.png
127-
Alt: Right-click menu 'Save all as HAR with content' in Chrome Network */}
132+
<img
133+
src="/docs/assets/chrome-devtools-export-har-button-menu.webp"
134+
alt="Export HAR from the Network tab toolbar — choose 'with sensitive data'"
135+
className="mt-4 rounded-lg border border-white/10"
136+
loading="lazy"
137+
/>
128138
</div>
129139
</div>
130140
</div>
@@ -152,16 +162,23 @@ export default function GuideGenerateHarChrome() {
152162
<li>Open DevTools Studio → Import → HAR File</li>
153163
<li>Select your <code>.har</code></li>
154164
</ol>
165+
<img
166+
src="/docs/assets/import-dialog-select-har.webp"
167+
alt="Import dialog selecting HAR file in DevTools Studio"
168+
className="mt-4 rounded-lg border border-white/10"
169+
loading="lazy"
170+
/>
155171
</div>
156172

157173
<div className="rounded-xl border border-white/10 bg-white/5 p-6">
158174
<h3 className="text-lg font-semibold text-white mb-2">Filter and map domains</h3>
159175
<p className="text-slate-300 text-sm">Remove analytics/fonts/CDNs; map domains to variables (e.g., BASE_URL).</p>
160-
{/* TODO: screenshots
161-
1. /public/media/devtools-import-har-domain-filter.png
162-
Alt: DevTools import HAR: domain filter checklist
163-
2. /public/media/devtools-domain-to-variable.png
164-
Alt: Map domain to {{BASE_URL}} variable in DevTools */}
176+
<img
177+
src="/docs/assets/import-map-domain-to-base-url.webp"
178+
alt="Map domain to {{BASE_URL}} variable in DevTools"
179+
className="mt-4 rounded-lg border border-white/10"
180+
loading="lazy"
181+
/>
165182
</div>
166183
</div>
167184
</section>
@@ -172,8 +189,12 @@ export default function GuideGenerateHarChrome() {
172189
<div className="rounded-xl border border-white/10 bg-white/5 p-6">
173190
<h3 className="text-lg font-semibold text-white mb-2">Review flow + dependencies</h3>
174191
<p className="text-slate-300 text-sm">Check the generated sequence and auto‑detected variable chaining.</p>
175-
{/* TODO: screenshot → /public/media/devtools-flow-dependencies.png
176-
Alt: DevTools flow dependencies visual with token chaining */}
192+
<img
193+
src="/docs/assets/flow-canvas-overview.webp"
194+
alt="Flow canvas overview showing request sequence and dependencies"
195+
className="mt-4 rounded-lg border border-white/10"
196+
loading="lazy"
197+
/>
177198
</div>
178199

179200
<div className="rounded-xl border border-white/10 bg-white/5 p-6">
@@ -186,11 +207,6 @@ export default function GuideGenerateHarChrome() {
186207
<div className="rounded-xl border border-white/10 bg-white/5 p-6">
187208
<h3 className="text-lg font-semibold text-white mb-2">Export YAML and commit</h3>
188209
<p className="text-slate-300 text-sm">Run once locally, then export to YAML and commit to your repo.</p>
189-
{/* TODO: screenshots
190-
1. /public/media/devtools-export-yaml.png
191-
Alt: Export flow to YAML in DevTools
192-
2. /public/media/git-diff-yaml-flow.png
193-
Alt: PR diff showing readable YAML flow changes */}
194210
</div>
195211
</div>
196212
</section>

app/layout.tsx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ import CookieConsent from '@/components/ui/CookieConsent'
66

77
export const metadata = {
88
metadataBase: new URL('https://dev.tools'),
9-
title: 'DevTools – Local-First API Testing & Flow Automation',
10-
description: 'Free, open-source API client and flow runner. Record browser traffic, turn it into executable YAML flows with auto-mapped variables, and run at multithreaded Go speed locally or in CI.',
11-
keywords: 'API testing, API client, flow automation, HAR import, YAML flows, API development, local-first, open source, CI/CD, REST API, HTTP client',
9+
title: 'DevTools – Open Source API Testing Tool | Multi-Step API Tests in CI',
10+
description: 'Open-source API testing tool that chains multi-step requests into reusable YAML workflows. Record real traffic, auto-map variables between steps, and run end-to-end API tests in CI with parallel execution and JUnit reports.',
11+
keywords: 'API testing tool, multi-step API testing, end-to-end API testing, API test automation, YAML API tests, CI CD API testing, open source API testing, HAR import, REST API testing, HTTP client',
1212
authors: [{ name: 'DevTools' }],
1313
openGraph: {
1414
type: 'website',
1515
url: 'https://dev.tools',
16-
title: 'DevTools – Local-First API Testing & Flow Automation',
17-
description: 'Free, open-source API client and flow runner. Record browser traffic, turn it into executable YAML flows, and run at Go speed locally or in CI.',
16+
title: 'DevTools – Open Source API Testing Tool | Multi-Step API Tests in CI',
17+
description: 'Open-source API testing tool that chains multi-step requests into reusable YAML workflows. Record real traffic, auto-map variables, and run end-to-end API tests in CI.',
1818
siteName: 'DevTools',
1919
images: [
2020
{
@@ -26,8 +26,8 @@ export const metadata = {
2626
},
2727
twitter: {
2828
card: 'summary_large_image',
29-
title: 'DevTools – Local-First API Testing & Flow Automation',
30-
description: 'Free, open-source API client and flow runner. Record browser traffic, turn it into executable YAML flows, and run at Go speed locally or in CI.',
29+
title: 'DevTools – Open Source API Testing Tool | Multi-Step API Tests in CI',
30+
description: 'Open-source API testing tool that chains multi-step requests into reusable YAML workflows. Record real traffic, auto-map variables, and run end-to-end API tests in CI.',
3131
images: ['https://dev.tools/assets/devtools-main-ss-1400w.webp'],
3232
},
3333
}
@@ -53,9 +53,15 @@ export default function RootLayout({
5353
applicationCategory: 'DeveloperApplication',
5454
operatingSystem: 'Windows, macOS, Linux',
5555
description:
56-
'Local-first API testing and flow automation tool. Record browser traffic, turn it into executable YAML flows with auto-mapped variables, and run at multithreaded Go speed.',
56+
'Open-source API testing tool that chains multi-step requests into reusable YAML workflows. Record real traffic, auto-map variables between steps, and run end-to-end API tests in CI with parallel execution.',
5757
url: 'https://dev.tools',
58+
downloadUrl: 'https://dev.tools/download',
5859
image: 'https://dev.tools/assets/devtools-main-ss-1400w.webp',
60+
offers: {
61+
'@type': 'Offer',
62+
price: '0',
63+
priceCurrency: 'USD',
64+
},
5965
author: {
6066
'@type': 'Organization',
6167
name: 'DevTools',

app/load-testing/page.tsx

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import Link from 'next/link'
2+
import LoadTestingWaitlistForm from '@/components/load-testing/LoadTestingWaitlistForm'
3+
4+
export const metadata = {
5+
title: 'API Load Testing – Coming Soon | DevTools',
6+
description:
7+
'Reuse your multi-step API test flows for load testing. Run from multiple regions with configurable concurrency. Coming soon to DevTools.',
8+
alternates: { canonical: '/load-testing/' },
9+
}
10+
11+
export default function LoadTestingPage() {
12+
return (
13+
<main className="mx-auto max-w-4xl px-4 py-16 sm:px-8">
14+
<header className="text-center mb-16">
15+
<span className="inline-flex items-center gap-2 rounded-full border border-neon/30 bg-neon/5 px-4 py-1.5 text-xs uppercase tracking-wide text-neon mb-6">
16+
Coming soon
17+
</span>
18+
<h1 className="text-4xl font-bold text-white sm:text-5xl md:text-6xl">
19+
API Load Testing
20+
</h1>
21+
<p className="mt-6 text-lg text-slate-300 max-w-2xl mx-auto">
22+
Reuse your existing multi-step API test flows for load testing. Configure concurrency, duration, and regions — no
23+
rewrites, no separate tools, no new syntax.
24+
</p>
25+
</header>
26+
27+
<section className="grid gap-6 md:grid-cols-2 mb-16">
28+
<div className="rounded-2xl border border-white/10 bg-white/5 p-6">
29+
<h2 className="text-xl font-semibold text-white mb-2">Same flows, load-tested</h2>
30+
<p className="text-slate-300 text-sm">
31+
Your multi-step YAML flows work for both functional testing and load testing. No need to rewrite tests
32+
or learn a new DSL.
33+
</p>
34+
</div>
35+
<div className="rounded-2xl border border-white/10 bg-white/5 p-6">
36+
<h2 className="text-xl font-semibold text-white mb-2">Multi-region execution</h2>
37+
<p className="text-slate-300 text-sm">
38+
Run load tests from multiple geographic regions to understand latency and performance across your global infrastructure.
39+
</p>
40+
</div>
41+
<div className="rounded-2xl border border-white/10 bg-white/5 p-6">
42+
<h2 className="text-xl font-semibold text-white mb-2">Configurable concurrency</h2>
43+
<p className="text-slate-300 text-sm">
44+
Ramp up virtual users, set duration, and define thresholds. The Go-based runner handles high concurrency efficiently.
45+
</p>
46+
</div>
47+
<div className="rounded-2xl border border-white/10 bg-white/5 p-6">
48+
<h2 className="text-xl font-semibold text-white mb-2">CI/CD integrated</h2>
49+
<p className="text-slate-300 text-sm">
50+
Run load tests in CI with pass/fail gates based on p95 latency, error rate, and throughput thresholds.
51+
</p>
52+
</div>
53+
</section>
54+
55+
<section id="waitlist" className="rounded-2xl border border-neon/30 bg-gradient-to-r from-white/5 to-neon/5 p-8 mb-16">
56+
<div className="max-w-2xl mx-auto text-center">
57+
<h2 className="text-2xl font-bold text-white mb-3">Join the load testing waitlist</h2>
58+
<p className="text-slate-300 mb-8 max-w-lg mx-auto">
59+
We're building API load testing into DevTools. Tell us about your team and we'll notify you when early access is available.
60+
</p>
61+
<LoadTestingWaitlistForm />
62+
</div>
63+
</section>
64+
65+
<section className="mb-16">
66+
<h2 className="text-2xl font-semibold text-white mb-4">While you wait</h2>
67+
<p className="text-slate-300 mb-6">Start with functional API testing today — your flows will be ready for load testing when it ships.</p>
68+
<div className="grid gap-4 md:grid-cols-3">
69+
<Link href="/features/multi-step-api-testing" className="rounded-2xl border border-white/10 bg-white/5 p-5 transition hover:bg-white/10">
70+
<h3 className="text-lg font-semibold text-white mb-1">Multi-step API testing</h3>
71+
<p className="text-slate-300 text-sm">Build test flows that chain requests with auto-mapped variables.</p>
72+
</Link>
73+
<Link href="/features/ci-cd-integration" className="rounded-2xl border border-white/10 bg-white/5 p-5 transition hover:bg-white/10">
74+
<h3 className="text-lg font-semibold text-white mb-1">CI/CD integration</h3>
75+
<p className="text-slate-300 text-sm">Run API tests in every pipeline with JUnit reports.</p>
76+
</Link>
77+
<Link href="/download" className="rounded-2xl border border-white/10 bg-white/5 p-5 transition hover:bg-white/10">
78+
<h3 className="text-lg font-semibold text-white mb-1">Download Studio</h3>
79+
<p className="text-slate-300 text-sm">Free, open-source desktop app for building API test flows.</p>
80+
</Link>
81+
</div>
82+
</section>
83+
84+
<footer className="text-sm text-slate-400 text-center">
85+
<p>
86+
See also: <Link href="/flows" className="text-neon hover:underline">Flows</Link>
87+
{' '}&middot;{' '}<Link href="/cli" className="text-neon hover:underline">CLI</Link>
88+
{' '}&middot;{' '}<Link href="/guides" className="text-neon hover:underline">Guides</Link>
89+
{' '}&middot;{' '}<Link href="/docs" className="text-neon hover:underline">Docs</Link>
90+
</p>
91+
</footer>
92+
</main>
93+
)
94+
}

0 commit comments

Comments
 (0)