mirror of
https://github.com/penpot/penpot-plugins.git
synced 2025-01-21 06:02:34 -05:00
test: added comments and ruler guides tests
This commit is contained in:
parent
9292bf286b
commit
86f98eb536
5 changed files with 241 additions and 10 deletions
|
@ -1,5 +1,79 @@
|
||||||
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
|
exports[`Plugins > comments 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"fills": [
|
||||||
|
{
|
||||||
|
"fillColor": "#FFFFFF",
|
||||||
|
"fillOpacity": 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"flipX": null,
|
||||||
|
"flipY": null,
|
||||||
|
"frameId": "1",
|
||||||
|
"height": 0.01,
|
||||||
|
"hideFillOnExport": false,
|
||||||
|
"id": "1",
|
||||||
|
"name": "Root Frame",
|
||||||
|
"parentId": "1",
|
||||||
|
"points": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0.01,
|
||||||
|
"y": 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0.01,
|
||||||
|
"y": 0.01,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0.01,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"proportion": 1,
|
||||||
|
"proportionLock": false,
|
||||||
|
"rotation": 0,
|
||||||
|
"selrect": {
|
||||||
|
"height": 0.01,
|
||||||
|
"width": 0.01,
|
||||||
|
"x": 0,
|
||||||
|
"x1": 0,
|
||||||
|
"x2": 0.01,
|
||||||
|
"y": 0,
|
||||||
|
"y1": 0,
|
||||||
|
"y2": 0.01,
|
||||||
|
},
|
||||||
|
"shapes": [],
|
||||||
|
"strokes": [],
|
||||||
|
"transform": {
|
||||||
|
"a": 1,
|
||||||
|
"b": 0,
|
||||||
|
"c": 0,
|
||||||
|
"d": 1,
|
||||||
|
"e": 0,
|
||||||
|
"f": 0,
|
||||||
|
},
|
||||||
|
"transformInverse": {
|
||||||
|
"a": 1,
|
||||||
|
"b": 0,
|
||||||
|
"c": 0,
|
||||||
|
"d": 1,
|
||||||
|
"e": 0,
|
||||||
|
"f": 0,
|
||||||
|
},
|
||||||
|
"type": "frame",
|
||||||
|
"width": 0.01,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`Plugins > component library 1`] = `
|
exports[`Plugins > component library 1`] = `
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -2007,6 +2081,80 @@ exports[`Plugins > plugin data 1`] = `
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`Plugins > ruler guides 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"fills": [
|
||||||
|
{
|
||||||
|
"fillColor": "#FFFFFF",
|
||||||
|
"fillOpacity": 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"flipX": null,
|
||||||
|
"flipY": null,
|
||||||
|
"frameId": "1",
|
||||||
|
"height": 0.01,
|
||||||
|
"hideFillOnExport": false,
|
||||||
|
"id": "1",
|
||||||
|
"name": "Root Frame",
|
||||||
|
"parentId": "1",
|
||||||
|
"points": [
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0.01,
|
||||||
|
"y": 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0.01,
|
||||||
|
"y": 0.01,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x": 0,
|
||||||
|
"y": 0.01,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"proportion": 1,
|
||||||
|
"proportionLock": false,
|
||||||
|
"rotation": 0,
|
||||||
|
"selrect": {
|
||||||
|
"height": 0.01,
|
||||||
|
"width": 0.01,
|
||||||
|
"x": 0,
|
||||||
|
"x1": 0,
|
||||||
|
"x2": 0.01,
|
||||||
|
"y": 0,
|
||||||
|
"y1": 0,
|
||||||
|
"y2": 0.01,
|
||||||
|
},
|
||||||
|
"shapes": [],
|
||||||
|
"strokes": [],
|
||||||
|
"transform": {
|
||||||
|
"a": 1,
|
||||||
|
"b": 0,
|
||||||
|
"c": 0,
|
||||||
|
"d": 1,
|
||||||
|
"e": 0,
|
||||||
|
"f": 0,
|
||||||
|
},
|
||||||
|
"transformInverse": {
|
||||||
|
"a": 1,
|
||||||
|
"b": 0,
|
||||||
|
"c": 0,
|
||||||
|
"d": 1,
|
||||||
|
"e": 0,
|
||||||
|
"f": 0,
|
||||||
|
},
|
||||||
|
"type": "frame",
|
||||||
|
"width": 0.01,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`Plugins > text and textrange 1`] = `
|
exports[`Plugins > text and textrange 1`] = `
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,10 +2,12 @@ import componentLibrary from './plugins/component-library';
|
||||||
import testingPlugin from './plugins/create-board-text-rect';
|
import testingPlugin from './plugins/create-board-text-rect';
|
||||||
import flex from './plugins/create-flexlayout';
|
import flex from './plugins/create-flexlayout';
|
||||||
import grid from './plugins/create-gridlayout';
|
import grid from './plugins/create-gridlayout';
|
||||||
|
import rulerGuides from './plugins/create-ruler-guides';
|
||||||
import createText from './plugins/create-text';
|
import createText from './plugins/create-text';
|
||||||
import group from './plugins/group';
|
import group from './plugins/group';
|
||||||
import insertSvg from './plugins/insert-svg';
|
import insertSvg from './plugins/insert-svg';
|
||||||
import pluginData from './plugins/plugin-data';
|
import pluginData from './plugins/plugin-data';
|
||||||
|
import comments from './plugins/create-comments';
|
||||||
import { Agent } from './utils/agent';
|
import { Agent } from './utils/agent';
|
||||||
|
|
||||||
describe('Plugins', () => {
|
describe('Plugins', () => {
|
||||||
|
@ -70,4 +72,21 @@ describe('Plugins', () => {
|
||||||
});
|
});
|
||||||
expect(result).toMatchSnapshot();
|
expect(result).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('ruler guides', async () => {
|
||||||
|
const agent = await Agent();
|
||||||
|
const result = await agent.runCode(rulerGuides.toString(), {
|
||||||
|
screenshot: 'create-ruler-guides',
|
||||||
|
});
|
||||||
|
expect(result).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('comments', async () => {
|
||||||
|
const agent = await Agent();
|
||||||
|
const result = await agent.runCode(comments.toString(), {
|
||||||
|
screenshot: 'create-comments',
|
||||||
|
avoidSavedStatus: true,
|
||||||
|
});
|
||||||
|
expect(result).toMatchSnapshot();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
40
apps/e2e/src/plugins/create-comments.ts
Normal file
40
apps/e2e/src/plugins/create-comments.ts
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
export default function () {
|
||||||
|
async function createComment() {
|
||||||
|
const page = penpot.getPage();
|
||||||
|
|
||||||
|
if (page) {
|
||||||
|
await page.addCommentThread('Hello world!', {
|
||||||
|
x: penpot.viewport.center.x,
|
||||||
|
y: penpot.viewport.center.y,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function replyComment() {
|
||||||
|
const page = penpot.getPage();
|
||||||
|
|
||||||
|
if (page) {
|
||||||
|
const comments = await page.findCommentThreads({
|
||||||
|
onlyYours: true,
|
||||||
|
showResolved: false,
|
||||||
|
});
|
||||||
|
await comments[0].reply('This is a reply.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function deleteComment() {
|
||||||
|
const page = penpot.getPage();
|
||||||
|
|
||||||
|
if (page) {
|
||||||
|
const commentThreads = await page.findCommentThreads({
|
||||||
|
onlyYours: true,
|
||||||
|
showResolved: false,
|
||||||
|
});
|
||||||
|
await page.removeCommentThread(commentThreads[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
createComment();
|
||||||
|
replyComment();
|
||||||
|
deleteComment();
|
||||||
|
}
|
21
apps/e2e/src/plugins/create-ruler-guides.ts
Normal file
21
apps/e2e/src/plugins/create-ruler-guides.ts
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
export default function () {
|
||||||
|
function createRulerGuides(): void {
|
||||||
|
const page = penpot.getPage();
|
||||||
|
|
||||||
|
if (page) {
|
||||||
|
page.addRulerGuide('horizontal', penpot.viewport.center.x);
|
||||||
|
page.addRulerGuide('vertical', penpot.viewport.center.y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeRulerGuides(): void {
|
||||||
|
const page = penpot.getPage();
|
||||||
|
|
||||||
|
if (page) {
|
||||||
|
page.removeRulerGuide(page.rulerGuides[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
createRulerGuides();
|
||||||
|
removeRulerGuides();
|
||||||
|
}
|
|
@ -93,9 +93,10 @@ export async function Agent() {
|
||||||
return {
|
return {
|
||||||
async runCode(
|
async runCode(
|
||||||
code: string,
|
code: string,
|
||||||
options: { screenshot?: string; autoFinish?: boolean } = {
|
options: { screenshot?: string; autoFinish?: boolean, avoidSavedStatus?: boolean, } = {
|
||||||
screenshot: '',
|
screenshot: '',
|
||||||
autoFinish: true,
|
autoFinish: true,
|
||||||
|
avoidSavedStatus: false
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
const autoFinish = options.autoFinish ?? true;
|
const autoFinish = options.autoFinish ?? true;
|
||||||
|
@ -113,15 +114,17 @@ export async function Agent() {
|
||||||
permissions: ['content:read', 'content:write'],
|
permissions: ['content:read', 'content:write'],
|
||||||
});
|
});
|
||||||
}, code);
|
}, code);
|
||||||
|
|
||||||
console.log('Waiting for save status...');
|
if (!options.avoidSavedStatus) {
|
||||||
await page.waitForSelector(
|
console.log('Waiting for save status...');
|
||||||
'.main_ui_workspace_right_header__saved-status',
|
await page.waitForSelector(
|
||||||
{
|
'.main_ui_workspace_right_header__saved-status',
|
||||||
timeout: 10000,
|
{
|
||||||
}
|
timeout: 10000,
|
||||||
);
|
}
|
||||||
console.log('Save status found.');
|
);
|
||||||
|
console.log('Save status found.');
|
||||||
|
}
|
||||||
|
|
||||||
if (options.screenshot && screenshotsEnable) {
|
if (options.screenshot && screenshotsEnable) {
|
||||||
console.log('Taking screenshot:', options.screenshot);
|
console.log('Taking screenshot:', options.screenshot);
|
||||||
|
|
Loading…
Add table
Reference in a new issue