94 lines
3.7 KiB
JavaScript
94 lines
3.7 KiB
JavaScript
import { chromium } from '@playwright/test';
|
|
|
|
const baseUrl = process.env.DYNASTY_REF_URL ?? 'http://127.0.0.1:3410/hwe';
|
|
const detailId = process.env.DYNASTY_REF_DETAIL_ID ?? '1';
|
|
|
|
const browser = await chromium.launch({ headless: true });
|
|
const page = await browser.newPage({
|
|
viewport: { width: 1280, height: 900 },
|
|
deviceScaleFactor: 1,
|
|
colorScheme: 'dark',
|
|
locale: 'ko-KR',
|
|
});
|
|
|
|
const measure = async (url) => {
|
|
await page.goto(url, { waitUntil: 'networkidle' });
|
|
return page.evaluate(() => {
|
|
const tables = Array.from(document.querySelectorAll('table')).map((table) => {
|
|
const rect = table.getBoundingClientRect();
|
|
const style = getComputedStyle(table);
|
|
return {
|
|
x: rect.x,
|
|
y: rect.y,
|
|
width: rect.width,
|
|
height: rect.height,
|
|
backgroundImage: style.backgroundImage,
|
|
borderSpacing: style.borderSpacing,
|
|
fontFamily: style.fontFamily,
|
|
fontSize: style.fontSize,
|
|
lineHeight: style.lineHeight,
|
|
};
|
|
});
|
|
const button = document.querySelector('button');
|
|
const buttonStyle = button ? getComputedStyle(button) : null;
|
|
const firstCell = document.querySelector('td');
|
|
const firstCellStyle = firstCell ? getComputedStyle(firstCell) : null;
|
|
return {
|
|
chromium: navigator.userAgent,
|
|
body: {
|
|
width: document.body.getBoundingClientRect().width,
|
|
minWidth: getComputedStyle(document.body).minWidth,
|
|
margin: getComputedStyle(document.body).margin,
|
|
fontFamily: getComputedStyle(document.body).fontFamily,
|
|
fontSize: getComputedStyle(document.body).fontSize,
|
|
lineHeight: getComputedStyle(document.body).lineHeight,
|
|
},
|
|
tables,
|
|
button: buttonStyle
|
|
? {
|
|
height: button.getBoundingClientRect().height,
|
|
borderWidth: buttonStyle.borderWidth,
|
|
borderRadius: buttonStyle.borderRadius,
|
|
backgroundColor: buttonStyle.backgroundColor,
|
|
color: buttonStyle.color,
|
|
padding: buttonStyle.padding,
|
|
fontFamily: buttonStyle.fontFamily,
|
|
fontSize: buttonStyle.fontSize,
|
|
lineHeight: buttonStyle.lineHeight,
|
|
cursor: buttonStyle.cursor,
|
|
}
|
|
: null,
|
|
firstCell: firstCellStyle
|
|
? {
|
|
padding: firstCellStyle.padding,
|
|
borderWidth: firstCellStyle.borderWidth,
|
|
textAlign: firstCellStyle.textAlign,
|
|
}
|
|
: null,
|
|
};
|
|
});
|
|
};
|
|
|
|
const output = {
|
|
list: await measure(`${baseUrl}/a_emperior.php`),
|
|
detail: await measure(`${baseUrl}/a_emperior_detail.php?select=${detailId}`),
|
|
};
|
|
|
|
if (process.env.FRONTEND_PARITY_ARTIFACT_DIR) {
|
|
await page.goto(`${baseUrl}/a_emperior.php`, { waitUntil: 'networkidle' });
|
|
await page.screenshot({
|
|
path: `${process.env.FRONTEND_PARITY_ARTIFACT_DIR}/dynasty-ref-list.png`,
|
|
fullPage: true,
|
|
});
|
|
if (process.env.DYNASTY_REF_CAPTURE_DETAIL === '1') {
|
|
await page.goto(`${baseUrl}/a_emperior_detail.php?select=${detailId}`, { waitUntil: 'networkidle' });
|
|
await page.screenshot({
|
|
path: `${process.env.FRONTEND_PARITY_ARTIFACT_DIR}/dynasty-ref-detail.png`,
|
|
fullPage: true,
|
|
});
|
|
}
|
|
}
|
|
|
|
process.stdout.write(`${JSON.stringify(output, null, 2)}\n`);
|
|
await browser.close();
|