Skip to content

Commit 07bc087

Browse files
author
tsv2013
committed
creator.onPageGetFooterActions - The three-dot button appears for a custom page footer action
Fixes #6889
1 parent 4c0d78c commit 07bc087

File tree

9 files changed

+90
-11
lines changed

9 files changed

+90
-11
lines changed

e2e/helper.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { Locator, Page } from "@playwright/test";
2+
import { expect, test as baseTest } from "@playwright/test";
3+
4+
export const url = "http://127.0.0.1:8080/testCafe/testcafe";
5+
6+
export async function compareScreenshot(page: Page, elementSelector: string | undefined, screenshotName: string, elementIndex = 0) {
7+
await page.addStyleTag({
8+
content: "textarea::-webkit-resizer { visibility: hidden !important; }"
9+
});
10+
11+
if (!!elementSelector) {
12+
const element = page.locator(elementSelector).filter({ visible: true });
13+
await expect.soft(element.nth(elementIndex)).toBeVisible();
14+
await expect.soft(element.nth(elementIndex)).toHaveScreenshot(screenshotName, {
15+
timeout: 10000
16+
});
17+
} else {
18+
await expect.soft(page).toHaveScreenshot(screenshotName, {
19+
timeout: 10000
20+
});
21+
}
22+
}

packages/survey-creator-angular/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@
8383
"test:single": "ng test --watch=false --browsers=ChromeHeadless survey-creator-angular",
8484
"release": "standard-version --message \"Release: %s [azurepipelines skip]\" ",
8585
"test:a11y": "playwright test --project a11y --ui",
86-
"test:a11y:ci": "playwright test --project a11y --reporter dot --quiet"
86+
"test:a11y:ci": "playwright test --project a11y --reporter dot --quiet",
87+
"test:scr": "playwright test --project scr --ui",
88+
"test:scr:ci": "playwright test --project scr --reporter dot --quiet"
8789
}
88-
}
90+
}

packages/survey-creator-core/src/components/page.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,10 @@ svc-page {
383383
flex-grow: 1;
384384
border: none;
385385
}
386+
387+
.svc-add-new-question-action {
388+
position: relative;
389+
}
386390
}
387391

388392
.svc-add-new-item-button__text {

packages/survey-creator-js/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@
3333
"watch:prod": "webpack --env buildType=prod --watch",
3434
"lint": "eslint ./src",
3535
"test:a11y": "playwright test --project a11y --ui",
36-
"test:a11y:ci": "playwright test --project a11y --reporter dot --quiet"
36+
"test:a11y:ci": "playwright test --project a11y --reporter dot --quiet",
37+
"test:scr": "playwright test --project scr --ui",
38+
"test:scr:ci": "playwright test --project scr --reporter dot --quiet"
3739
},
3840
"devDependencies": {
3941
"@rollup/plugin-alias": "^5.1.1",
@@ -74,4 +76,4 @@
7476
"survey-creator-core": "../survey-creator-core/build",
7577
"survey-js-ui": "../../../survey-library/packages/survey-js-ui/build"
7678
}
77-
}
79+
}

packages/survey-creator-react/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
"lint": "eslint . --max-warnings=0",
3737
"lint:fix": "eslint . --fix",
3838
"test:a11y": "playwright test --project a11y --ui",
39-
"test:a11y:ci": "playwright test --project a11y --reporter dot --quiet"
39+
"test:a11y:ci": "playwright test --project a11y --reporter dot --quiet",
40+
"test:scr": "playwright test --project scr --ui",
41+
"test:scr:ci": "playwright test --project scr --reporter dot --quiet"
4042
},
4143
"devDependencies": {
4244
"@rollup/plugin-node-resolve": "^16.0.0",
@@ -85,4 +87,4 @@
8587
"survey-react-ui": "../../../survey-library/packages/survey-react-ui/build",
8688
"survey-creator-core": "../survey-creator-core/build"
8789
}
88-
}
90+
}

packages/survey-creator-vue/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
"testcafe:ci": "testcafe ../../functionalTests/ --app \"npm run serve:example:prod\" --selector-timeout 1500 --reporter minimal",
2626
"testcafe": "testcafe ../../functionalTests/ --app \"npm run serve:example:prod\" --selector-timeout 1500 --config-file .testcaferc.dev.js",
2727
"test:a11y": "playwright test --project a11y --ui",
28-
"test:a11y:ci": "playwright test --project a11y --reporter dot --quiet"
28+
"test:a11y:ci": "playwright test --project a11y --reporter dot --quiet",
29+
"test:scr": "playwright test --project scr --ui",
30+
"test:scr:ci": "playwright test --project scr --reporter dot --quiet"
2931
},
3032
"devDependencies": {
3133
"@babel/types": "^7.20.2",
@@ -53,4 +55,4 @@
5355
"vue": "3.4.19",
5456
"vue-tsc": "^2.2.0"
5557
}
56-
}
58+
}

playwright.config.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
import { defineConfig } from "@playwright/test";
22
import { resolve } from "path";
33
export default defineConfig({
4+
retries: process.env.CI ? 3 : 0,
45
webServer: {
56
command: "",
67
url: "http://localhost:8080"
78
},
9+
snapshotPathTemplate: "{testDir}/{testFilePath}-snapshots/{arg}{ext}",
10+
reporter: [["junit", { outputFile: "test-results/e2e-junit-results.xml" }], ["html", { open: "never" }]],
811
projects: [
912
{
1013
name: "a11y",
1114
testDir: resolve(__dirname, "./accessibilityTests")
1215
},
1316
{
14-
name: "vrt",
15-
testDir: resolve(__dirname, "./visualRegressionTests")
17+
name: "scr",
18+
testDir: resolve(__dirname, "./screenshotTests")
1619
},
1720
{
1821
name: "e2e",
19-
testDir: resolve(__dirname, "./functionalTests")
22+
testDir: resolve(__dirname, "./e2e")
2023
}
2124
]
2225
});

screenshotTests/surface.spec.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { url, compareScreenshot } from "../e2e/helper";
2+
import { test, expect } from "@playwright/test";
3+
4+
const title = "Design Surface Screenshot";
5+
6+
test.describe(title, () => {
7+
test.beforeEach(async ({ page }) => {
8+
await page.goto(`${url}`);
9+
});
10+
test("Check question type dots selector", async ({ page }) => {
11+
await page.setViewportSize({ width: 1000, height: 800 });
12+
await page.evaluate(() => {
13+
window["creator"].onPageGetFooterActions.add((sender, options) => {
14+
const page = options.page;
15+
options.actions.push({
16+
id: "sv-nav-clear-page",
17+
title: "Clear Page",
18+
action: () => {
19+
alert("Clear Page");
20+
},
21+
css: "nav-button",
22+
innerCss: "sd-btn nav-input",
23+
});
24+
});
25+
window["creator"].JSON = {
26+
"pages": [
27+
{
28+
"name": "page1",
29+
"elements": [
30+
{
31+
"type": "text",
32+
"name": "question1"
33+
}
34+
]
35+
}
36+
],
37+
"headerView": "advanced"
38+
};
39+
});
40+
await compareScreenshot(page, ".sv-action-bar.svc-page__footer", "dots-type-selector-custom-button.png");
41+
});
42+
});
Loading

0 commit comments

Comments
 (0)