Add Playwright tests for Shinkan login page
All checks were successful
Deploy Development / deploy (push) Successful in 47s
All checks were successful
Deploy Development / deploy (push) Successful in 47s
- Created test-login.js to automate testing of the Shinkan login page, including waiting for deployment, capturing page title, heading, and counting elements (buttons, forms, inputs). - Implemented functionality to log button texts and input placeholders, and take a full-page screenshot. - Created test-shinkan.js to streamline the login page testing process, removing the deployment wait and adding a preview of the page content.
This commit is contained in:
parent
33032ac6c2
commit
3b2c3605fd
1424
.claude/docs/functional/shinkan_anforderungsdokument_entwurf.md
Normal file
1424
.claude/docs/functional/shinkan_anforderungsdokument_entwurf.md
Normal file
File diff suppressed because it is too large
Load Diff
59
test-login.js
Normal file
59
test-login.js
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
const { chromium } = require('playwright');
|
||||
|
||||
(async () => {
|
||||
const browser = await chromium.launch({ headless: true });
|
||||
const page = await browser.newPage();
|
||||
|
||||
console.log('=== Testing Shinkan Login Page ===\n');
|
||||
|
||||
try {
|
||||
// Wait a bit for deployment
|
||||
console.log('Waiting 30 seconds for deployment...');
|
||||
await new Promise(resolve => setTimeout(resolve, 30000));
|
||||
|
||||
await page.goto('http://192.168.2.49:3098', { waitUntil: 'networkidle', timeout: 10000 });
|
||||
|
||||
const title = await page.title();
|
||||
console.log('📄 Title:', title);
|
||||
|
||||
const h1 = await page.textContent('h1').catch(() => null);
|
||||
console.log('🥋 Heading:', h1);
|
||||
|
||||
// Count elements
|
||||
const buttons = await page.locator('button').count();
|
||||
const forms = await page.locator('form').count();
|
||||
const inputs = await page.locator('input').count();
|
||||
|
||||
console.log('\n🔍 Elements Found:');
|
||||
console.log(' - Buttons:', buttons);
|
||||
console.log(' - Forms:', forms);
|
||||
console.log(' - Inputs:', inputs);
|
||||
|
||||
// Get button texts
|
||||
if (buttons > 0) {
|
||||
console.log('\n🔘 Buttons:');
|
||||
for (let i = 0; i < buttons; i++) {
|
||||
const text = await page.locator('button').nth(i).textContent();
|
||||
console.log(` ${i + 1}. "${text}"`);
|
||||
}
|
||||
}
|
||||
|
||||
// Get input placeholders
|
||||
if (inputs > 0) {
|
||||
console.log('\n📝 Inputs:');
|
||||
for (let i = 0; i < inputs; i++) {
|
||||
const placeholder = await page.locator('input').nth(i).getAttribute('placeholder');
|
||||
const type = await page.locator('input').nth(i).getAttribute('type');
|
||||
console.log(` ${i + 1}. Type: ${type}, Placeholder: "${placeholder}"`);
|
||||
}
|
||||
}
|
||||
|
||||
await page.screenshot({ path: 'shinkan-login-screenshot.png', fullPage: true });
|
||||
console.log('\n📸 Screenshot: shinkan-login-screenshot.png');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Error:', error.message);
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
})();
|
||||
56
test-shinkan.js
Normal file
56
test-shinkan.js
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
const { chromium } = require('playwright');
|
||||
|
||||
(async () => {
|
||||
const browser = await chromium.launch({ headless: true });
|
||||
const page = await browser.newPage();
|
||||
|
||||
console.log('=== Testing Shinkan Login Page ===\n');
|
||||
|
||||
try {
|
||||
await page.goto('http://192.168.2.49:3098', { waitUntil: 'networkidle', timeout: 10000 });
|
||||
|
||||
const title = await page.title();
|
||||
console.log('📄 Title:', title);
|
||||
|
||||
const h1 = await page.textContent('h1').catch(() => null);
|
||||
console.log('🥋 Heading:', h1);
|
||||
|
||||
const buttons = await page.locator('button').count();
|
||||
const forms = await page.locator('form').count();
|
||||
const inputs = await page.locator('input').count();
|
||||
|
||||
console.log('\n🔍 Elements Found:');
|
||||
console.log(' - Buttons:', buttons);
|
||||
console.log(' - Forms:', forms);
|
||||
console.log(' - Inputs:', inputs);
|
||||
|
||||
if (buttons > 0) {
|
||||
console.log('\n🔘 Buttons:');
|
||||
for (let i = 0; i < buttons; i++) {
|
||||
const text = await page.locator('button').nth(i).textContent();
|
||||
console.log(` ${i + 1}. "${text}"`);
|
||||
}
|
||||
}
|
||||
|
||||
if (inputs > 0) {
|
||||
console.log('\n📝 Inputs:');
|
||||
for (let i = 0; i < inputs; i++) {
|
||||
const placeholder = await page.locator('input').nth(i).getAttribute('placeholder');
|
||||
const type = await page.locator('input').nth(i).getAttribute('type');
|
||||
console.log(` ${i + 1}. Type: ${type}, Placeholder: "${placeholder}"`);
|
||||
}
|
||||
}
|
||||
|
||||
const bodyText = await page.evaluate(() => document.body.innerText);
|
||||
console.log('\n📝 Page Content Preview:');
|
||||
console.log(bodyText.substring(0, 300));
|
||||
|
||||
await page.screenshot({ path: 'shinkan-login-screenshot.png', fullPage: true });
|
||||
console.log('\n📸 Screenshot: shinkan-login-screenshot.png');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Error:', error.message);
|
||||
}
|
||||
|
||||
await browser.close();
|
||||
})();
|
||||
Loading…
Reference in New Issue
Block a user