diff --git a/fern/assets/images/landing/hero.png b/fern/assets/images/landing/hero.png
new file mode 100644
index 0000000..4ce478a
Binary files /dev/null and b/fern/assets/images/landing/hero.png differ
diff --git a/fern/docs.yml b/fern/docs.yml
index d08d16d..582cbba 100644
--- a/fern/docs.yml
+++ b/fern/docs.yml
@@ -89,7 +89,7 @@ navbar-links:
value: https://github.com/doc-detective/doc-detective
footer-links:
- github: https://github.com/your-org/your-repo
+ github: https://github.com/doc-detective
linkedin: https://www.linkedin.com/company/doc-detective
discord: https://discord.gg/2M7wXEThfF
diff --git a/fern/pages/contribute/local-development.mdx b/fern/pages/contribute/local-development.mdx
index 7a39688..9f7048e 100644
--- a/fern/pages/contribute/local-development.mdx
+++ b/fern/pages/contribute/local-development.mdx
@@ -32,7 +32,7 @@ For quick fixes (typos, small wording changes), use the [browser-based workflow]
node --version
```
-Should show `v18.0.0` or higher.
+Should show `v20.0.0` or higher.
## Fork and clone the repository
diff --git a/fern/pages/contribute/standard-contributions.mdx b/fern/pages/contribute/standard-contributions.mdx
index e5beba5..defdecd 100644
--- a/fern/pages/contribute/standard-contributions.mdx
+++ b/fern/pages/contribute/standard-contributions.mdx
@@ -140,55 +140,55 @@ Highlight important information with admonitions. Make sure you use the appropri
```markdown title="Note syntax"
- :::note
+
`note` is for information that the user should be aware of but isn't critical.
- :::
+
```
- :::note
+
`note` is for information that the user should be aware of but isn't critical.
- :::
+
```markdown title="Tip syntax"
- :::tip
+
`tip` is for useful advice or shortcuts that can help the user.
- :::
+
```
- :::tip
+
`tip` is for useful advice or shortcuts that can help the user.
- :::
+
```markdown title="Info syntax"
- :::info
+
`info` is for useful information that isn't critical but may help the user.
- :::
+
```
- :::info
+
`info` is for useful information that isn't critical but may help the user.
- :::
+
```markdown title="Warning syntax"
- :::warning
+
`warning` should be used when an action may be difficult to undo or may cost the user unexpected time or resources.
- :::
+
```
- :::warning
+
`warning` should be used when an action may be difficult to undo or may cost the user unexpected time or resources.
- :::
+
```markdown title="Danger syntax"
- :::danger
+
`danger` should be used when there's a risk of data loss, unexpected cost, or harm.
- :::
+
```
- :::danger
+
`danger` should be used when there's a risk of data loss, unexpected cost, or harm.
- :::
+
diff --git a/fern/pages/contribute/templates/feature.mdx b/fern/pages/contribute/templates/feature.mdx
index 2cb1400..a9c40f4 100644
--- a/fern/pages/contribute/templates/feature.mdx
+++ b/fern/pages/contribute/templates/feature.mdx
@@ -234,10 +234,11 @@ Be explicit about what breaks:
If behavior varies by version:
```markdown
-:::info Version differences This feature works differently depending on your Doc Detective version:
+
+This feature works differently depending on your Doc Detective version:
**v2.x:** Uses `oldOption` **v3.x and later:** Uses `newOption`
-:::
+
```
## Example feature documentation
diff --git a/fern/pages/contribute/templates/tutorial.mdx b/fern/pages/contribute/templates/tutorial.mdx
index 2f0fb23..13d8e49 100644
--- a/fern/pages/contribute/templates/tutorial.mdx
+++ b/fern/pages/contribute/templates/tutorial.mdx
@@ -238,7 +238,7 @@ A test that:
## What you'll need
-- Node.js 18 or later installed
+- Node.js 20 or later installed
- A text editor
- 10 minutes
diff --git a/fern/pages/contribute/testing.mdx b/fern/pages/contribute/testing.mdx
index 047ee0d..cee3cda 100644
--- a/fern/pages/contribute/testing.mdx
+++ b/fern/pages/contribute/testing.mdx
@@ -479,7 +479,7 @@ If tests fail in CI but pass locally:
2. **Look for environment differences**: Paths, dependencies, timing
3. **Run tests in Docker** (mimics CI environment):
```bash
- docker run --rm -v $(pwd):/app -w /app node:18 npm run doc-detective
+ docker run --rm -v $(pwd):/app -w /app node:20 npm run doc-detective
```
4. **Ask for help**: Comment on the PR with the error details
diff --git a/fern/pages/docs/actions/checkLink.mdx b/fern/pages/docs/actions/checkLink.mdx
index 3026344..939b398 100644
--- a/fern/pages/docs/actions/checkLink.mdx
+++ b/fern/pages/docs/actions/checkLink.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests,
description: Check if a URL returns an acceptable status code from a GET request.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `checkLink` action checks if a URL returns an acceptable status code from a GET request. This action is useful for verifying that a hyperlink or image URL is valid.
@@ -249,6 +247,4 @@ After applying these changes, the test should pass:
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/click.mdx b/fern/pages/docs/actions/click.mdx
index d16a5f3..edcd2e5 100644
--- a/fern/pages/docs/actions/click.mdx
+++ b/fern/pages/docs/actions/click.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Click or tap an element on the page.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `click` action allows you to click or tap an element on the page. You can specify which mouse button to use and target elements using text or selectors.
@@ -135,6 +133,4 @@ Here are a few ways you might use the `click` action:
- [`find`](/docs/actions/find): Find an element and optionally interact with it
- [`type`](/docs/actions/type): Type text or special keys
-## Schema reference
-
diff --git a/fern/pages/docs/actions/dragAndDrop.mdx b/fern/pages/docs/actions/dragAndDrop.mdx
index fbe5a3d..e0154c9 100644
--- a/fern/pages/docs/actions/dragAndDrop.mdx
+++ b/fern/pages/docs/actions/dragAndDrop.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Drag an element to a target location.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `dragAndDrop` action allows you to drag an element and drop it at a target location. This is useful for testing drag-and-drop interfaces, reordering lists, moving items between containers, and other interactive UI elements.
@@ -104,6 +102,4 @@ Here are several ways you might use the `dragAndDrop` action:
- [`find`](/docs/actions/find): Locate elements before performing other actions
- [`wait`](/docs/actions/wait): Add delays for animations to complete
-## Schema reference
-
diff --git a/fern/pages/docs/actions/find.mdx b/fern/pages/docs/actions/find.mdx
index 23d9070..34dda40 100644
--- a/fern/pages/docs/actions/find.mdx
+++ b/fern/pages/docs/actions/find.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Locate and interact with an element on the page.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `find` action locates an element in the current interface based on its display text or a CSS/XPath selector. After finding the element, you can optionally interact with it, such as clicking it or typing into it.
@@ -170,6 +168,4 @@ Here are a few ways you might use the `find` action:
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/goTo.mdx b/fern/pages/docs/actions/goTo.mdx
index 7c0218f..17e43e2 100644
--- a/fern/pages/docs/actions/goTo.mdx
+++ b/fern/pages/docs/actions/goTo.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Navigate to a specified URL.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `goTo` action navigates the browser to a specified URL. This is typically used to start a test at a specific page or navigate between pages during a test.
@@ -220,6 +218,4 @@ Use multiple wait conditions together with a custom timeout.
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/httpRequest.mdx b/fern/pages/docs/actions/httpRequest.mdx
index 2bf5513..cfbb2ac 100644
--- a/fern/pages/docs/actions/httpRequest.mdx
+++ b/fern/pages/docs/actions/httpRequest.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Perform a generic HTTP request, for example to an API.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `httpRequest` action makes arbitrary HTTP calls, allowing you to interact with and validate APIs or other web services directly within your tests.
@@ -390,6 +388,4 @@ You can use both `response.required` and `response.body` together to validate th
> **Note:** Fields with `null`, `""`, `0`, or `false` values are considered to exist and will pass validation.
-## Schema reference
-
diff --git a/fern/pages/docs/actions/loadCookie.mdx b/fern/pages/docs/actions/loadCookie.mdx
index 3905e5b..4c35464 100644
--- a/fern/pages/docs/actions/loadCookie.mdx
+++ b/fern/pages/docs/actions/loadCookie.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Load a cookie from a file or environment variable into the browser.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `loadCookie` action loads a cookie from a file or environment variable into the browser. This action is useful for restoring authentication sessions, user preferences, or other stateful information that was previously saved using the [`saveCookie`](/docs/actions/save-cookie) action.
@@ -195,6 +193,4 @@ Load a cookie with detailed configuration:
- [`saveCookie`](/docs/actions/save-cookie): Save a browser cookie to a file or environment variable
- [`loadVariables`](/docs/actions/load-variables): Load environment variables from .env files
-## Schema reference
-
diff --git a/fern/pages/docs/actions/loadVariables.mdx b/fern/pages/docs/actions/loadVariables.mdx
index 0cdaf13..c619ed6 100644
--- a/fern/pages/docs/actions/loadVariables.mdx
+++ b/fern/pages/docs/actions/loadVariables.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Load environment variables from a .env file.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `loadVariables` action loads environment variables from a specified `.env` file. This action is useful for accessing sensitive information, such as API keys or other credentials, without hardcoding them into your tests. Variables loaded this way are available for use in subsequent steps within the same test.
@@ -54,6 +52,4 @@ You can load these variables using the `loadVariables` action:
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/record.mdx b/fern/pages/docs/actions/record.mdx
index e2ccf20..f88e4bc 100644
--- a/fern/pages/docs/actions/record.mdx
+++ b/fern/pages/docs/actions/record.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Start capturing a video of test execution.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `record` action starts recording the browser viewport as a video file (MP4, WebM, or GIF). This is useful for debugging failed tests or creating multimedia documentation. Recording continues until a `stopRecord` step is encountered.
@@ -116,6 +114,4 @@ Records to `test_video.gif` in the `output/gifs` directory, overwriting if it ex
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/runCode.mdx b/fern/pages/docs/actions/runCode.mdx
index 37cd656..fca0940 100644
--- a/fern/pages/docs/actions/runCode.mdx
+++ b/fern/pages/docs/actions/runCode.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Assemble and run code snippets in various languages.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `runCode` action executes a code snippet in a specified language (like JavaScript, Python, Bash, etc.) on the local machine and evaluates the results. This allows embedding executable code directly within your tests.
@@ -146,6 +144,4 @@ The first step runs Python code to print "setup", validates the output using a r
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/runShell.mdx b/fern/pages/docs/actions/runShell.mdx
index 21a0919..6b2af52 100644
--- a/fern/pages/docs/actions/runShell.mdx
+++ b/fern/pages/docs/actions/runShell.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Perform a native shell command.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `runShell` action runs a shell command or script on the local machine and evaluates the results, extending Doc Detective's testing capabilities to anything you can script.
@@ -157,6 +155,4 @@ The first step echoes "setup", validates the output using a regex, and captures
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/saveCookie.mdx b/fern/pages/docs/actions/saveCookie.mdx
index 81f8d8e..0b095cd 100644
--- a/fern/pages/docs/actions/saveCookie.mdx
+++ b/fern/pages/docs/actions/saveCookie.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Save a browser cookie to a file or environment variable for later reuse.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `saveCookie` action saves a browser cookie to a file or environment variable for later reuse. This action is useful for preserving authentication sessions, user preferences, or other stateful information between test runs or across different tests.
@@ -153,6 +151,4 @@ Save a cookie with detailed configuration:
- [`loadVariables`](/docs/actions/load-variables): Load environment variables from .env files
-## Schema reference
-
diff --git a/fern/pages/docs/actions/screenshot.mdx b/fern/pages/docs/actions/screenshot.mdx
index 9bc389b..ef87b87 100644
--- a/fern/pages/docs/actions/screenshot.mdx
+++ b/fern/pages/docs/actions/screenshot.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Take a screenshot in PNG format and optionally perform visual regression testing.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `screenshot` action captures a PNG image of the current browser viewport or a specific element. It can also perform visual regression testing by comparing the captured image against a previously saved reference image.
@@ -148,6 +146,4 @@ Captures the element with text "Submit Button", adds 10px padding, and compares
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/stopRecord.mdx b/fern/pages/docs/actions/stopRecord.mdx
index 697e2ac..89e31e4 100644
--- a/fern/pages/docs/actions/stopRecord.mdx
+++ b/fern/pages/docs/actions/stopRecord.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Stop capturing a video of test execution.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `stopRecord` action stops a video recording previously started by a [`record`](record) action and saves the video file.
@@ -47,6 +45,4 @@ This example starts recording, performs an action, and then stops the recording.
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/type.mdx b/fern/pages/docs/actions/type.mdx
index 0d7f607..737a36c 100644
--- a/fern/pages/docs/actions/type.mdx
+++ b/fern/pages/docs/actions/type.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Type keys, including special keys like Enter.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `type` action simulates key presses, including special keys such as Enter. This action is useful for simulating user input, such as filling out a form, navigating a website, or using keyboard shortcuts. It typically requires a preceding `find` or `click` action to focus an input element.
@@ -193,6 +191,4 @@ Here's a list of special keys you can use:
}
```
-## Schema reference
-
diff --git a/fern/pages/docs/actions/wait.mdx b/fern/pages/docs/actions/wait.mdx
index dfc503d..125b104 100644
--- a/fern/pages/docs/actions/wait.mdx
+++ b/fern/pages/docs/actions/wait.mdx
@@ -7,8 +7,6 @@ grand_parent: Tests
description: Pause before performing the next action.
---
-import { schemas } from "doc-detective-common";
-import JSONSchemaViewer from "@theme/JSONSchemaViewer";
The `wait` action pauses test execution for a specified duration before proceeding to the next step. This is useful for adding delays, for example, to allow time for animations to complete or to make recordings easier to follow.
@@ -71,6 +69,4 @@ The value assigned to the `wait` key is the duration to pause in milliseconds. Y
}
```
-## Schema reference
-
diff --git a/fern/pages/index.mdx b/fern/pages/index.mdx
index d6ce2bd..2d87933 100644
--- a/fern/pages/index.mdx
+++ b/fern/pages/index.mdx
@@ -1,11 +1,81 @@
---
+layout: overview
title: Doc Detective
-subtitle: Keep your docs in sync with your product. Always.
-headline: "Doc Detective | Documentation"
+subtitle: Keep your docs accurate and up-to-date
+description: Doc Detective is a documentation testing framework that ensures your docs are always right.
slug: /
hide-nav-links: false
hide-feedback: true
hide-page-actions: true
---
-Home page content.
+Doc Detective tests your documentation to make sure every command, example, and instruction still works, so your users don't get stuck.
+
+
+
+{/* */}
+
+{/* ## Powering teams that test what they publish
+
+
+
+ Ensuring their developer docs are always accurate.
+
+
+ Keeping community-contributed docs reliable and up-to-date.
+
+
+ Verifying onboarding docs stay current and helpful.
+
+ */}
+
+## If code is tested, docs should be too
+
+Doc Detective performs your instructions step-by-step, just like your users would, and reports what works and what doesn't.
+
+## Taking the guesswork out of docs maintenance
+
+
+
+ Test CLI commands, API calls, and UI actions directly from your documentation.
+
+
+ Never take a manual screenshot again.
+
+
+ Run tests automatically in your CI/CD pipeline to prevent regressions.
+
+
+
+
+## How it works
+
+1. **Bring your docs.** Whether in Markdown, AsciiDoc, DITA, or other formats, Doc Detective can read them.
+1. **Detect testable content.** Doc Detective scans commands, code blocks, and examples users are expected to run.
+1. **Run the tests.** Each instruction is executed in a real environment to confirm it works as documented.
+1. **Get actionable reports.** See what passed, what failed, and where your docs need updates.
+
+## Built for teams that value accuracy
+
+
+
+ Ship with confidence knowing your docs match your code.
+
+
+ Verify accuracy without running every command manually.
+
+
+ Keep community-contributed docs reliable and up-to-date.
+
+
+ Make sure onboarding docs stay up-to-date and helpful.
+
+
+
+## Keep your documentation trustworthy
+
+Instead of assuming your docs still work, Doc Detective continuously verifies them by running real checks against real systems, catching issues before your users do.
+
+## Start catching documentation issues before your users do
+
+
diff --git a/fern/pages/reference/schemas/filetypes-anyof-0--array-anyof-1--markup-array-actions-anyof-1--array-anyof-1--anyof-3--allof-1--goto-anyof-1--waituntil-2e1bb8d9.md b/fern/pages/reference/schemas/filetypes-anyof-0--array-anyof-1--markup-array-actions-anyof-1--array-anyof-1--anyof-3--allof-1--goto-anyof-1--waituntil-2e1bb8d9.md
deleted file mode 100644
index 94013ff..0000000
--- a/fern/pages/reference/schemas/filetypes-anyof-0--array-anyof-1--markup-array-actions-anyof-1--array-anyof-1--anyof-3--allof-1--goto-anyof-1--waituntil-2e1bb8d9.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: "fileTypes-anyOf[0]-array-anyOf[1]-markup-array-actions-anyOf[1]-array-anyOf[1]-anyOf[3]-allOf[1]-goTo-anyOf[1]-waitUntil-2e1bb8d9"
----
-
-Configuration for waiting conditions after navigation.
-
-## Referenced In
-
-- [Go to URL (detailed)](/reference/schemas/go-to-url-detailed)
-
-## Fields
-
-Field | Type | Description | Default
-:-- | :-- | :-- | :--
-networkIdleTime | one of: - integer - null | Optional. Wait for network activity to be idle (no new requests) for this duration in milliseconds. Set to `null` to skip this check. | `500`
-domIdleTime | one of: - integer - null | Optional. Wait for DOM mutations to stop for this duration in milliseconds. Set to `null` to skip this check. | `1000`
-find | object | Optional. Wait for a specific element to be present in the DOM. At least one of selector or elementText must be specified. |
-
-## Examples
-
-```json
-{
- "networkIdleTime": 500,
- "domIdleTime": 1000,
- "find": {
- "selector": "example",
- "elementText": "example"
- }
-}
-```
diff --git a/fern/pages/reference/schemas/filetypes-anyof-0--array-anyof-1--markup-array-actions-anyof-1--array-anyof-1--anyof-3--allof-1--goto-anyof-1--waituntil-find-10f35ec9.md b/fern/pages/reference/schemas/filetypes-anyof-0--array-anyof-1--markup-array-actions-anyof-1--array-anyof-1--anyof-3--allof-1--goto-anyof-1--waituntil-find-10f35ec9.md
deleted file mode 100644
index d257364..0000000
--- a/fern/pages/reference/schemas/filetypes-anyof-0--array-anyof-1--markup-array-actions-anyof-1--array-anyof-1--anyof-3--allof-1--goto-anyof-1--waituntil-find-10f35ec9.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: "fileTypes-anyOf[0]-array-anyOf[1]-markup-array-actions-anyOf[1]-array-anyOf[1]-anyOf[3]-allOf[1]-goTo-anyOf[1]-waitUntil-find-10f35ec9"
----
-
-Wait for a specific element to be present in the DOM. At least one of selector or elementText must be specified.
-
-## Referenced In
-
-- [fileTypes-anyOf[0]-array-anyOf[1]-markup-array-actions-anyOf[1]-array-anyOf[1]-anyOf[3]-allOf[1]-goTo-anyOf[1]-waitUntil-2e1bb8d9](/reference/schemas/filetypes-anyof-0--array-anyof-1--markup-array-actions-anyof-1--array-anyof-1--anyof-3--allof-1--goto-anyof-1--waituntil-2e1bb8d9)
-
-## Fields
-
-Field | Type | Description | Default
-:-- | :-- | :-- | :--
-selector | string | Optional. CSS selector for the element to wait for. |
-elementText | string | Optional. Text content the element must contain. |
-
-## Examples
-
-```json
-{
- "selector": "example",
- "elementText": "example"
-}
-```
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..dd5622a
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,17 @@
+{
+ "name": "doc-detective-docs",
+ "version": "1.0.0-beta",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "doc-detective-docs",
+ "version": "1.0.0-beta",
+ "engines": {
+ "node": "^22.12.0 || ^24.11.1",
+ "npm": "^10.9.2 || ^11.6.2",
+ "pnpm": "^10.24.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index fa4b0c6..c846df8 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
"scripts": {
"setup": "npm i -g mdx2vast fern-api doc-detective@latest",
"dev": "fern docs dev",
- "test": "npx doc-detective@latest runTests"
+ "test": "npx doc-detective"
},
"engines": {
"node": "^22.12.0 || ^24.11.1",