Files
fil/docs/snippets/wasm/plugins/plugin_testing.md
Henrik Jess Nielsen b4c07d3693
All checks were successful
Deploy fil (kreuzberg) / deploy (push) Successful in 49s
Nomad changes
2026-06-01 23:40:55 +02:00

75 lines
1.8 KiB
Markdown

# Plugin Testing Pattern
Test custom plugins to verify they implement required interfaces correctly.
```typescript title="WASM"
import init, { registerValidator, registerPostProcessor } from "kreuzberg-wasm";
await init();
// Test fixture: sample extraction result
const sampleResult = {
text: "Sample extracted text from document",
metadata: {
mimeType: "application/pdf",
source: "test.pdf",
pageCount: 1,
},
};
// Test post-processor registration
function testPostProcessorRegistration() {
const processor = {
processingStage: () => "post-extraction",
process: (result) => result,
};
try {
registerPostProcessor(processor);
console.log("✓ Post-processor registered successfully");
} catch (error) {
console.error("✗ Post-processor registration failed:", error);
}
}
// Test validator registration
function testValidatorRegistration() {
const validator = {
validate: (result) => ({
valid: !!result.text,
error: result.text ? null : "No text extracted",
}),
};
try {
registerValidator(validator);
console.log("✓ Validator registered successfully");
} catch (error) {
console.error("✗ Validator registration failed:", error);
}
}
// Test required methods validation
function testInterfaceValidation() {
// Missing required method should fail
const invalidProcessor = {
// Missing processingStage() method
process: (result) => result,
};
try {
registerPostProcessor(invalidProcessor);
console.error("✗ Should have rejected processor with missing methods");
} catch (error) {
console.log("✓ Correctly rejected invalid processor:", error);
}
}
// Run tests
testPostProcessorRegistration();
testValidatorRegistration();
testInterfaceValidation();
```
Validate plugin implementations before deploying to production.