WPackageToolsE2e.mjs

import launchChromium from './launchChromium.mjs'
import launchChromiumCore from './launchChromiumCore.mjs'
import chromiumLaunchArgs from './chromiumLaunchArgs.mjs'
import launchBrowser from './launchBrowser.mjs'
import captureStable from './captureStable.mjs'
import captureStableWithBox from './captureStableWithBox.mjs'
import itemsUnionBox from './itemsUnionBox.mjs'
import inkRect, { INK_PAD } from './inkRect.mjs'
import waitAlertGone from './waitAlertGone.mjs'
import canvasInkRects from './canvasInkRects.mjs'
import composeBox, { BOX_PAD, BOX_STROKE } from './composeBox.mjs'
import stepShots from './stepShots.mjs'
import maskRegions from './maskRegions.mjs'
import overlayRegions from './overlayRegions.mjs'
import overlayImageAt from './overlayImageAt.mjs'
import cropRegion from './cropRegion.mjs'
import assertBaselineMatch from './assertBaselineMatch.mjs'
import typeIntoInput from './typeIntoInput.mjs'
import typeIntoNthInput from './typeIntoNthInput.mjs'
import waitUntilExist from './waitUntilExist.mjs'
import pollUntil from './pollUntil.mjs'
import collectDomText from './collectDomText.mjs'
import pageHasText from './pageHasText.mjs'
import assertTextSpec from './assertTextSpec.mjs'
import waitColResizeOverlay from './waitColResizeOverlay.mjs'
import waitDrawerReady from './waitDrawerReady.mjs'
import probeStuckTooltip from './probeStuckTooltip.mjs'
import resetAgGridScroll from './resetAgGridScroll.mjs'
import rowBoxSel from './rowBoxSel.mjs'
import gridContentBox from './gridContentBox.mjs'
import waitGridIdle from './waitGridIdle.mjs'
import getE2eMode from './getE2eMode.mjs'
import createBaselineGate from './createBaselineGate.mjs'
import findOrphanBaselines from './findOrphanBaselines.mjs'
import runBaselineCase from './runBaselineCase.mjs'
import normalizeShots from './normalizeShots.mjs'
import openCasePage from './openCasePage.mjs'
import createKnownDefect from './createKnownDefect.mjs'
import createServiceManager from './createServiceManager.mjs'
import registerCleanupHooks from './registerCleanupHooks.mjs'
import probeHttp from './probeHttp.mjs'
import createTempSettings from './createTempSettings.mjs'
import runIsolatedE2e from './runIsolatedE2e.mjs'
import killOwnTree from './killOwnTree.mjs'
import isChildAlive from './isChildAlive.mjs'
import waitChildExit from './waitChildExit.mjs'
import pidExists from './pidExists.mjs'
import sleepSync from './sleepSync.mjs'
import killPortListeners from './killPortListeners.mjs'
import listenerPids from './listenerPids.mjs'
import parseListenerPids from './parseListenerPids.mjs'
import snapshotBaselines from './snapshotBaselines.mjs'
import diffBaselineSnapshots from './diffBaselineSnapshots.mjs'
import compareImageDirs from './compareImageDirs.mjs'


// WPackageToolsE2e.mjs — e2e 測試與標準圖(pixel baseline)共用設施之共用入口
//
// 匯入 ./src 內其他全部模組, 以單一物件對外提供; 各模組亦可逐一以 w-package-tools-e2e/src/<模組>.mjs 深層引用.
// 引用本入口會一併載入全部模組與其依賴(playwright、sharp 等), 只用少數函數者宜深層引用.
// ./tools 之盤點 CLI 為可執行腳本(引用即執行並可能結束行程), 不在此匯入, 用法見各檔檔頭.


/**
 * e2e 測試與標準圖(pixel baseline)共用設施
 *
 * @returns {Object} 回傳物件,其內含截圖與影像(launchChromium、launchChromiumCore、chromiumLaunchArgs、launchBrowser、captureStable、captureStableWithBox、itemsUnionBox、inkRect、waitAlertGone、canvasInkRects、composeBox、stepShots、maskRegions、overlayRegions、overlayImageAt、cropRegion、assertBaselineMatch、typeIntoInput、typeIntoNthInput、waitUntilExist、pollUntil、collectDomText、pageHasText、assertTextSpec、waitColResizeOverlay、waitDrawerReady、probeStuckTooltip、resetAgGridScroll、rowBoxSel、gridContentBox、waitGridIdle)、產製與比對管線(getE2eMode、createBaselineGate、findOrphanBaselines、runBaselineCase、normalizeShots、openCasePage、createKnownDefect)、生命週期與行程(createServiceManager、registerCleanupHooks、probeHttp、createTempSettings、runIsolatedE2e、killOwnTree、isChildAlive、waitChildExit、pidExists、sleepSync、killPortListeners、listenerPids、parseListenerPids)、驗證工具(snapshotBaselines、diffBaselineSnapshots、compareImageDirs),以及框幾何常數BOX_PAD、BOX_STROKE、INK_PAD
 * @example
 *
 * import wpte from 'w-package-tools-e2e/src/WPackageToolsE2e.mjs'
 *
 * let browser = await wpte.launchBrowser()
 * let page = await wpte.openCasePage(browser)
 * await page.goto('http://127.0.0.1:8080')
 * let buf = await wpte.captureStableWithBox(page, '#btn')
 * wpte.assertBaselineMatch(buf, './test/pics/demo/demo-eng-E2E-001-click-btn.png', 'demo-eng-E2E-001-click-btn')
 * await browser.close()
 *
 * 其餘詳見各模組範例
 *
 */
let WPackageToolsE2e = {

    //截圖與影像
    launchChromium,
    launchChromiumCore,
    chromiumLaunchArgs,
    launchBrowser,
    captureStable,
    captureStableWithBox,
    itemsUnionBox,
    inkRect,
    INK_PAD,
    waitAlertGone,
    canvasInkRects,
    composeBox,
    BOX_PAD,
    BOX_STROKE,
    stepShots,
    maskRegions,
    overlayRegions,
    overlayImageAt,
    cropRegion,
    assertBaselineMatch,
    typeIntoInput,
    typeIntoNthInput,
    waitUntilExist,
    pollUntil,
    collectDomText,
    pageHasText,
    assertTextSpec,
    waitColResizeOverlay,
    waitDrawerReady,
    probeStuckTooltip,
    resetAgGridScroll,
    rowBoxSel,
    gridContentBox,
    waitGridIdle,

    //產製與比對管線
    getE2eMode,
    createBaselineGate,
    findOrphanBaselines,
    runBaselineCase,
    normalizeShots,
    openCasePage,
    createKnownDefect,

    //生命週期與行程
    createServiceManager,
    registerCleanupHooks,
    probeHttp,
    createTempSettings,
    runIsolatedE2e,
    killOwnTree,
    isChildAlive,
    waitChildExit,
    pidExists,
    sleepSync,
    killPortListeners,
    listenerPids,
    parseListenerPids,

    //驗證工具
    snapshotBaselines,
    diffBaselineSnapshots,
    compareImageDirs,

}


export default WPackageToolsE2e