Skip to content

Commit

Permalink
feat(e2e): 修改截屏目录以适应最新python截屏相似度对比&后续web服务功能
Browse files Browse the repository at this point in the history
re #80
  • Loading branch information
fanniehuang committed Apr 20, 2021
1 parent 4da2d2b commit c0031b3
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 12 deletions.
2 changes: 1 addition & 1 deletion packages/wxa-cli/src/tester/e2eTester.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,9 @@ class TesterScheduler extends Schedule {
) {
mdl.code = `
var __e2e__state = require('wxa://wxa-e2eTest/state.js')
var __testSuitePlugin = require('wxa://wxa-e2eTest/e2eTestSuite.js');
var __e2eMockWxMethod = require('wxa://wxa-e2eTest/e2eMockWxMethod.js');
__e2eMockWxMethod.mock({state: __e2e__state});
var __testSuitePlugin = require('wxa://wxa-e2eTest/e2eTestSuite.js');
require('@wxa/core').wxa.use(__testSuitePlugin, {record: ${!!this.cmdOptions.record}, state: __e2e__state});
${mdl.code}
`;
Expand Down
40 changes: 32 additions & 8 deletions packages/wxa-cli/src/tester/wxa-e2eTest/e2eTestCaseTpl.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@ afterAll(async () => {
for (let j = 0; j < testCaseNameArr.length; j++) {
let testName = testCaseNameArr[j];
test(testName, async () => {
let screenshotDir = path.join(testDir, testName, screenshotDirname);
let screenshotDir = path.join(testDir, '.replay_result', screenshotDirname, testName, 'screenshot');
let baseScreenshot = path.join(testDir, testName, 'base_screenshot');
if (base) {
screenshotDir = baseScreenshot;
}
let diffDir = path.join(screenshotDir, 'diff');
if (base) {
try {
Expand All @@ -60,9 +64,9 @@ for (let j = 0; j < testCaseNameArr.length; j++) {
}
}
try {
fs.mkdirSync(screenshotDir)
mkdirsSync(screenshotDir)
if (!base) {
fs.mkdirSync(diffDir);
mkdirsSync(diffDir);
}
} catch(err) {
}
Expand All @@ -80,7 +84,11 @@ for (let j = 0; j < testCaseNameArr.length; j++) {
let mapKey = `<%- mockItem.tpl %>`
if (apiMockMap[mapKey] && apiMockMap[mapKey].length > 0) {
console.log(mapKey, 'mock success')
<% if(mockItem.name === 'request') {%>
return apiMockMap[mapKey].shift();
<% } else {%>
return apiMockMap[mapKey][0];
<% }%>
}
return new Promise(resolve => {
config.success = res => resolve(res)
Expand All @@ -104,7 +112,10 @@ for (let j = 0; j < testCaseNameArr.length; j++) {
let recordAction = recordItem.action;
while (true) {
page = await miniProgram.currentPage()
if (page.path === (recordAction.page || recordAction.appStartPage).split('?')[0]) {
if (recordAction.event === 'switchTab') {
await sleep(4000);
break;
} else if (page.path === (recordAction.page || recordAction.appStartPage).split('?')[0]) {
break;
}
await sleep(1000);
Expand All @@ -129,7 +140,8 @@ for (let j = 0; j < testCaseNameArr.length; j++) {
let same = await screenShot({
screenshotDir,
screenCount: screenCount++,
diff
diff,
baseScreenshot
})
if (customExpect && i !== 0 && record[i - 1].customExpect && typeof record[i - 1].customExpect === 'function') {
record[i - 1].customExpect();
Expand All @@ -156,7 +168,8 @@ for (let j = 0; j < testCaseNameArr.length; j++) {
let same = await screenShot({
screenshotDir,
screenCount: screenCount,
diff: screenshotDiff || record[record.length - 1].sceeenshotDiff
diff: screenshotDiff || record[record.length - 1].sceeenshotDiff,
baseScreenshot
})
// 无diff图片,则比对通过
if (!base) {
Expand All @@ -165,9 +178,9 @@ for (let j = 0; j < testCaseNameArr.length; j++) {
})
}

async function screenShot({screenshotDir, screenCount, diff}) {
async function screenShot({screenshotDir, screenCount, diff, baseScreenshot}) {
let actualImagePath = path.join(screenshotDir, `${screenCount}.png`);
let expectPath = path.resolve(screenshotDir, `../base_screenshot`, `${screenCount}.png` );
let expectPath = baseScreenshot;
await miniProgram.screenshot({path: actualImagePath});
if (diff) {
let same = await imageDiff(actualImagePath, expectPath, path.join(screenshotDir, `diff/${screenCount}.png`));
Expand Down Expand Up @@ -208,3 +221,14 @@ function imageDiff(actualImage, expectImage, diffPath) {
})
})
}
// 递归创建目录 同步方法
function mkdirsSync(dirname) {
if (fs.existsSync(dirname)) {
return true;
} else {
if (mkdirsSync(path.dirname(dirname))) {
fs.mkdirSync(dirname);
return true;
}
}
}
6 changes: 3 additions & 3 deletions packages/wxa-cli/src/tester/wxa-e2eTest/runTestCase.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export default async function(cmd, wxaConfigs) {
} else {
let files = fs.readdirSync(testDir);
files.forEach((item) => {
if (item === '.cache') {
if (item[0] === '.') {
return;
}
let stat = fs.lstatSync(path.join(testDir, item));
Expand All @@ -49,7 +49,7 @@ export default async function(cmd, wxaConfigs) {
screenshotPath = 'base_screenshot';
} else {
let timeStamp = formatDate(+new Date());
screenshotPath = timeStamp;
screenshotPath = timeStamp.replace(' ', '_').replace(/:/g, '.');
}
try {

Expand All @@ -68,7 +68,7 @@ export default async function(cmd, wxaConfigs) {
cliPath: cli.split(path.sep).join('/'),
testCaseNameArr: JSON.stringify(testCaseNameArr),
testDir: testDir.split(path.sep).join('/'),
screenshotPath: screenshotPath.replace(' ', '_').replace(/:/g, '.'),
screenshotPath,
base: !!cmd.base,
screenshotDiff: screenshotDiff,
mockApi: cmd.mock,
Expand Down

0 comments on commit c0031b3

Please sign in to comment.