Files
markitect-main/test_reset_functionality.js
tegwick c5a5b26797
Some checks failed
Test Suite / code-quality (push) Has been cancelled
Test Suite / unit-tests (3.11) (push) Has been cancelled
Test Suite / unit-tests (3.12) (push) Has been cancelled
Test Suite / security-scan (push) Has been cancelled
Test Suite / integration-tests (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / performance-tests (push) Has been cancelled
Test Suite / test-summary (push) Has been cancelled
refactor: Still trying to reorganize edit mode to be more robust
2025-11-04 21:59:22 +01:00

230 lines
9.1 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
/**
* Test the reset button functionality for both text and image sections
*/
const fs = require('fs');
const { JSDOM } = require('jsdom');
// Load the generated HTML file
const htmlContent = fs.readFileSync('/tmp/test_reset_buttons.html', 'utf8');
// Create JSDOM environment
const dom = new JSDOM(htmlContent, {
runScripts: "dangerously",
resources: "usable",
pretendToBeVisual: true
});
const { window } = dom;
const { document } = window;
// Add console methods to window for debugging
window.console = console;
// Mock viewport dimensions
window.innerWidth = 1200;
window.innerHeight = 800;
// Wait for DOM to load and components to initialize
setTimeout(() => {
try {
console.log('🔄 Testing Reset Button Functionality...\n');
const components = window.markitectComponents;
if (!components) {
console.error('❌ Components not initialized');
return;
}
const sections = document.querySelectorAll('.ui-edit-section');
console.log(`Found ${sections.length} sections to test`);
let testCount = 0;
let passedTests = 0;
// Test text section reset functionality
const testTextSectionReset = (sectionIndex) => {
if (sectionIndex >= sections.length) {
// Test image section after all text sections
testImageSectionReset();
return;
}
const section = sections[sectionIndex];
const sectionId = section.getAttribute('data-section-id');
const sectionObj = components.sectionManager.sections.get(sectionId);
// Skip image sections for this test
if (sectionObj && sectionObj.isImage()) {
testTextSectionReset(sectionIndex + 1);
return;
}
testCount++;
console.log(`\nTEST ${testCount}: Text Reset - Section ${sectionId}`);
// Click section to open editor
section.click();
setTimeout(() => {
const floatingMenu = document.querySelector('.ui-edit-floating-menu');
if (floatingMenu) {
const textarea = floatingMenu.querySelector('textarea');
const resetButton = Array.from(floatingMenu.querySelectorAll('button'))
.find(btn => btn.textContent.includes('Reset'));
if (textarea && resetButton) {
// Get original content
const originalContent = textarea.value;
console.log(` 📝 Original content length: ${originalContent.length} chars`);
// Modify content
textarea.value = "MODIFIED CONTENT FOR TESTING";
console.log(` ✏️ Modified content: "${textarea.value}"`);
// Click reset button
resetButton.click();
setTimeout(() => {
const resetContent = textarea.value;
console.log(` 🔄 Reset content length: ${resetContent.length} chars`);
if (resetContent === originalContent) {
passedTests++;
console.log(` ✅ Reset button works correctly`);
} else {
console.log(` ❌ Reset button failed`);
console.log(` Expected: "${originalContent.substring(0, 50)}..."`);
console.log(` Got: "${resetContent.substring(0, 50)}..."`);
}
// Close editor and move to next
const cancelBtn = Array.from(floatingMenu.querySelectorAll('button'))
.find(btn => btn.textContent.includes('Cancel'));
if (cancelBtn) {
cancelBtn.click();
}
setTimeout(() => {
testTextSectionReset(sectionIndex + 1);
}, 100);
}, 100);
} else {
console.log(` ❌ Missing elements - Textarea: ${!!textarea}, Reset Button: ${!!resetButton}`);
testTextSectionReset(sectionIndex + 1);
}
} else {
console.log(` ❌ Failed to open editor`);
testTextSectionReset(sectionIndex + 1);
}
}, 200);
};
// Test image section reset functionality
const testImageSectionReset = () => {
// Find image section
const imageSection = Array.from(sections).find(section => {
const sectionId = section.getAttribute('data-section-id');
const sectionObj = components.sectionManager.sections.get(sectionId);
return sectionObj && sectionObj.isImage();
});
if (!imageSection) {
console.log('\n⚠ No image section found for testing');
showFinalResults();
return;
}
testCount++;
const sectionId = imageSection.getAttribute('data-section-id');
console.log(`\nTEST ${testCount}: Image Reset - Section ${sectionId}`);
// Click image section to open editor
imageSection.click();
setTimeout(() => {
const floatingMenu = document.querySelector('.ui-edit-floating-menu');
if (floatingMenu) {
const altTextInput = floatingMenu.querySelector('input[type="text"]');
const resetButton = Array.from(floatingMenu.querySelectorAll('button'))
.find(btn => btn.textContent.includes('Reset'));
if (altTextInput && resetButton) {
// Get original alt text
const originalAltText = altTextInput.value;
console.log(` 📝 Original alt text: "${originalAltText}"`);
// Modify alt text
altTextInput.value = "MODIFIED ALT TEXT FOR TESTING";
altTextInput.dispatchEvent(new window.Event('input'));
console.log(` ✏️ Modified alt text: "${altTextInput.value}"`);
// Wait a moment for staging state to update
setTimeout(() => {
// Click reset button
resetButton.click();
setTimeout(() => {
const resetAltText = altTextInput.value;
console.log(` 🔄 Reset alt text: "${resetAltText}"`);
if (resetAltText === originalAltText) {
passedTests++;
console.log(` ✅ Image reset button works correctly`);
} else {
console.log(` ❌ Image reset button failed`);
console.log(` Expected: "${originalAltText}"`);
console.log(` Got: "${resetAltText}"`);
}
// Close editor
const cancelBtn = Array.from(floatingMenu.querySelectorAll('button'))
.find(btn => btn.textContent.includes('Cancel'));
if (cancelBtn) {
cancelBtn.click();
}
setTimeout(() => {
showFinalResults();
}, 100);
}, 100);
}, 100);
} else {
console.log(` ❌ Missing elements - Alt Text Input: ${!!altTextInput}, Reset Button: ${!!resetButton}`);
showFinalResults();
}
} else {
console.log(` ❌ Failed to open image editor`);
showFinalResults();
}
}, 200);
};
const showFinalResults = () => {
console.log('\n📊 RESET BUTTON TEST SUMMARY:');
console.log(` Total tests: ${testCount}`);
console.log(` Passed tests: ${passedTests}`);
console.log(` Success rate: ${Math.round((passedTests / testCount) * 100)}%`);
if (passedTests === testCount) {
console.log('\n🎉 All reset buttons working correctly!');
} else {
console.log('\n⚠ Some reset buttons need fixes');
}
};
// Start testing with text sections
testTextSectionReset(0);
} catch (error) {
console.error('❌ Test failed:', error.message);
console.error(error.stack);
}
}, 1000);