com um clique
tdd
// Use when implementing new features or fixing bugs to enforce test-driven development. Guides the RED-GREEN-REFACTOR cycle for Java (JUnit), Python (pytest), and TypeScript (Jest/Playwright) in OpenMetadata.
// Use when implementing new features or fixing bugs to enforce test-driven development. Guides the RED-GREEN-REFACTOR cycle for Java (JUnit), Python (pytest), and TypeScript (Jest/Playwright) in OpenMetadata.
Deep reliability audit for OpenMetadata connectors — runs 7 investigation prompts (metadata, errors, auth, lineage, scale, synthesis, implementation) against connector standards
Use to review code changes with a two-stage process - first checking spec/requirements compliance, then code quality. Works on staged changes, branches, or PRs.
Meta-skill loaded at session start. Directs Claude to check for applicable OpenMetadata skills before starting any task. Ensures structured workflows are followed.
Use when starting a non-trivial feature, refactor, or multi-file change. Forces structured design thinking before writing any code - brainstorm approaches, get approval, then create a step-by-step implementation plan.
Use before claiming any task is complete. Requires running actual verification commands and showing evidence — no "should work" claims without proof.
Build a new OpenMetadata connector from scratch — scaffold JSON Schema, Python boilerplate, and AI context using schema-first architecture with code generation across Python, Java, TypeScript, and auto-rendered UI forms.
| name | tdd |
| description | Use when implementing new features or fixing bugs to enforce test-driven development. Guides the RED-GREEN-REFACTOR cycle for Java (JUnit), Python (pytest), and TypeScript (Jest/Playwright) in OpenMetadata. |
| user-invocable | true |
| argument-hint | <feature or bug description> |
Enforce RED-GREEN-REFACTOR discipline across all three language stacks.
Write the smallest test that describes the desired behavior. Run it. It must fail. If it passes, your test isn't testing the new behavior.
Java (JUnit 5):
# Write test in openmetadata-service/src/test/ or openmetadata-integration-tests/
mvn test -pl openmetadata-service -Dtest=YourTestClass#yourTestMethod
Python (pytest):
source env/bin/activate
cd ingestion
# Write test using pytest style — plain assert, no unittest.TestCase
python -m pytest tests/unit/your_test.py::test_your_function -v
TypeScript (Jest):
cd openmetadata-ui/src/main/resources/ui
yarn test path/to/YourComponent.test.ts
Rules for RED:
assert x == y, not self.assertEqual(x, y)Write only the code needed to make the test pass. No more.
Run the test again. It must pass.
Now improve the code while keeping tests green:
# Java — format then test
mvn spotless:apply
mvn test -pl openmetadata-service
# Python — format, lint, then test
cd ingestion && make py_format && make lint
python -m pytest tests/unit/your_test.py -v
# TypeScript — lint then test
cd openmetadata-ui/src/main/resources/ui
yarn lint:fix
yarn test path/to/YourComponent.test.ts
Go back to RED with the next behavior. Each cycle should take minutes, not hours.
| Layer | Test Type | Location | Runner |
|---|---|---|---|
| Java REST API | Integration | openmetadata-integration-tests/ | mvn verify |
| Java service logic | Unit | openmetadata-service/src/test/ | mvn test |
| Python connectors | Unit | ingestion/tests/unit/ | pytest |
| Python integration | Integration | ingestion/tests/integration/ | pytest |
| React components | Unit | Co-located .test.ts files | yarn test |
| UI E2E flows | E2E | playwright/e2e/ | yarn playwright:run |
verify(). Assert on outcomes.Java integration tests use BaseEntityIT with TestNamespace for isolation and OpenMetadataClient for API calls. Prefer this over heavily mocked unit tests for API testing.
Python connector tests should test real behavior:
# Good: test the actual parsing logic
def test_parse_table_metadata():
raw = {"name": "users", "columns": [...]}
result = parse_table(raw)
assert result.name == "users"
assert len(result.columns) == 3
# Bad: mock everything and verify calls
def test_parse_table_metadata():
mock_client = MagicMock()
mock_client.get.return_value = {...}
# ... 20 lines of mock setup
verify(mock_client.get).called_once() # proves nothing
Frontend tests should render components and assert on visible output:
// Good: test what the user sees
render(<MyComponent data={testData} />);
expect(screen.getByText('Expected Label')).toBeInTheDocument();
// Bad: test implementation details
expect(component.state.internalFlag).toBe(true);