forked from icd/rentgen
refactor(test): extract JavaScript test code to test-lib.js
- Created tests/test-lib.js with testBackgroundComputation() function - Updated test_verify.py to load and execute test library via Marionette - Modified Dockerfile to copy both test-lib.js and test_verify.py to /app/tests/ - Improved code organization and reusability 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
1668d4e911
commit
8bf58a2cb1
@ -82,9 +82,10 @@ CMD ["echo", "Use verify stage for testing"]
|
|||||||
# Integration test stage - automated testing with exit code
|
# Integration test stage - automated testing with exit code
|
||||||
FROM runtime AS integration_test
|
FROM runtime AS integration_test
|
||||||
|
|
||||||
# Copy verification script
|
# Copy verification scripts
|
||||||
COPY tests/test_verify.py /app/test_verify.py
|
COPY tests/test_verify.py /app/tests/test_verify.py
|
||||||
RUN chmod +x /app/test_verify.py
|
COPY tests/test-lib.js /app/tests/test-lib.js
|
||||||
|
RUN chmod +x /app/tests/test_verify.py
|
||||||
|
|
||||||
# Run verification and exit with proper exit code
|
# Run verification and exit with proper exit code
|
||||||
CMD ["python3", "/app/test_verify.py"]
|
CMD ["python3", "/app/tests/test_verify.py"]
|
||||||
|
|||||||
1257
package-lock.json
generated
1257
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
36
tests/test-lib.js
Normal file
36
tests/test-lib.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
// Test library for Marionette-based extension verification
|
||||||
|
// This JavaScript code runs in the browser context via Marionette
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that background script performs computation correctly
|
||||||
|
* @param {number} testValue - Input value for computation
|
||||||
|
* @returns {Promise<number|null>} - Computed result or null on failure
|
||||||
|
*/
|
||||||
|
function testBackgroundComputation(testValue) {
|
||||||
|
// Check if content script loaded
|
||||||
|
if (!document.body.getAttribute('data-rentgen-injected')) {
|
||||||
|
return -1; // Content script not loaded
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dispatch test request to content script
|
||||||
|
document.dispatchEvent(new CustomEvent('rentgen_test_request', {
|
||||||
|
detail: { value: testValue, timestamp: Date.now() }
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Wait for background response
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
let attempts = 0;
|
||||||
|
const checkInterval = setInterval(() => {
|
||||||
|
attempts++;
|
||||||
|
const computed = document.body.getAttribute('data-rentgen-computed');
|
||||||
|
|
||||||
|
if (computed) {
|
||||||
|
clearInterval(checkInterval);
|
||||||
|
resolve(parseInt(computed));
|
||||||
|
} else if (attempts > 50) {
|
||||||
|
clearInterval(checkInterval);
|
||||||
|
resolve(null);
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -70,36 +70,17 @@ def test_addition():
|
|||||||
test_value = 17
|
test_value = 17
|
||||||
expected = 37
|
expected = 37
|
||||||
|
|
||||||
result = client.execute_script("""
|
# Load test library
|
||||||
const testValue = arguments[0];
|
test_lib_path = os.path.join(os.path.dirname(__file__), 'test-lib.js')
|
||||||
|
with open(test_lib_path, 'r') as f:
|
||||||
|
test_lib = f.read()
|
||||||
|
|
||||||
// Check if content script loaded
|
# Execute test
|
||||||
if (!document.body.getAttribute('data-rentgen-injected')) {
|
result = client.execute_script(
|
||||||
return -1; // Content script not loaded
|
test_lib + "\nreturn testBackgroundComputation(arguments[0]);",
|
||||||
}
|
script_args=[test_value],
|
||||||
|
script_timeout=10000
|
||||||
// Dispatch test request to content script
|
)
|
||||||
document.dispatchEvent(new CustomEvent('rentgen_test_request', {
|
|
||||||
detail: { value: testValue, timestamp: Date.now() }
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Wait for background response
|
|
||||||
return new Promise((resolve) => {
|
|
||||||
let attempts = 0;
|
|
||||||
const checkInterval = setInterval(() => {
|
|
||||||
attempts++;
|
|
||||||
const computed = document.body.getAttribute('data-rentgen-computed');
|
|
||||||
|
|
||||||
if (computed) {
|
|
||||||
clearInterval(checkInterval);
|
|
||||||
resolve(parseInt(computed));
|
|
||||||
} else if (attempts > 50) {
|
|
||||||
clearInterval(checkInterval);
|
|
||||||
resolve(null);
|
|
||||||
}
|
|
||||||
}, 100);
|
|
||||||
});
|
|
||||||
""", script_args=[test_value], script_timeout=10000)
|
|
||||||
|
|
||||||
client.close()
|
client.close()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user