# Create Test

> Create or update test cases for a Zotero translator by running it against live URLs and capturing the output.

- Skill: `zotero/create-test` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zotero/create-test`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zotero/create-test/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: zotero (https://skillmd.com/u/zotero)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zotero/create-test

---


## How test cases work

Test cases are embedded at the end of each translator file between `/** BEGIN TEST CASES **/` and `/** END TEST CASES **/`. They look like JS but **the content is strict JSON** — double-quoted keys, no trailing commas, no comments, no single quotes. The linter enforces this.

```js
/** BEGIN TEST CASES **/
var testCases = [
	{
		"type": "web",
		"url": "https://example.com/article/123",
		"items": [
			{
				"itemType": "journalArticle",
				"title": "Example Article",
				...
			}
		]
	}
]
/** END TEST CASES **/
```

## Creating test cases

The tool runs the translator, captures its output, and writes the test case JSON directly into the file. Do NOT hand-write test case item objects.

### Web

```
node .bin/create-test.mjs "<translator filename>" --url "<url>"
```

### Search

```
node .bin/create-test.mjs "<translator filename>" --search '{"DOI":"10.1234/example"}'
```

### Import

```
node .bin/create-test.mjs "<translator filename>" --input "<import data>"
```

### Export

Export tests are not supported by the automated test runner. Test export translators manually.

## Options

- `--no-write`: Preview the captured test case without modifying the file.
- `--json`: Output structured JSON.
- `--headed`: Open a visible browser. Required for sites behind Cloudflare or a similar anti-bot wall, which refuse headless Chrome outright.

## Guidelines

- Include at least one single-item test and one `"multiple"` test (if supported).
- Use stable URLs unlikely to change (DOI-based, permalinks, archived content).
- Always use this tool to generate test cases. Never write test case items by hand — the tool ensures the JSON matches what the translator actually produces.
- If you need to update a test case after changing translator code, re-run the tool for that URL. Replace the old test case entry with the new output.

