Merge remote-tracking branch 'origin/staging' into staging-render

This commit is contained in:
Andrey Antukh
2025-12-01 10:11:06 +01:00
14 changed files with 137 additions and 65 deletions

View File

@@ -20,7 +20,7 @@ concurrency:
jobs:
lint:
name: "Code Linter"
name: "Linter"
runs-on: ubuntu-24.04
container: penpotapp/devenv:latest
@@ -30,10 +30,7 @@ jobs:
- name: Check clojure code format
run: |
corepack enable;
corepack install;
yarn install
yarn run fmt:clj:check
./scripts/lint
test-common:
name: "Common Tests"
@@ -52,10 +49,7 @@ jobs:
- name: Run tests on NODE
working-directory: ./common
run: |
corepack enable;
corepack install;
yarn install;
yarn run test;
./scripts/test
test-frontend:
name: "Frontend Tests"
@@ -69,25 +63,12 @@ jobs:
- name: Unit Tests
working-directory: ./frontend
run: |
corepack enable;
corepack install;
yarn install;
yarn run test;
./scripts/test
- name: Component Tests
working-directory: ./frontend
run: |
yarn run playwright install chromium --with-deps;
yarn run build:storybook
npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" \
"npx http-server storybook-static --port 6006 --silent" \
"npx wait-on tcp:6006 && yarn test:storybook"
- name: Check SCSS Format
working-directory: ./frontend
run: |
yarn run lint:scss;
./scripts/test-components
test-render-wasm:
name: "Render WASM Tests"
@@ -164,11 +145,7 @@ jobs:
- name: Run tests
working-directory: ./library
run: |
corepack enable;
corepack install;
yarn install;
yarn run build:bundle;
yarn run test;
./scripts/test
build-integration:
name: "Build Integration Bundle"
@@ -219,11 +196,7 @@ jobs:
- name: Run Tests
working-directory: ./frontend
run: |
corepack enable;
corepack install;
yarn install;
yarn run playwright install chromium --with-deps;
yarn run test:e2e -x --workers=2 --reporter=list --shard="1/4";
./scripts/test-e2e --shard="1/4";
- name: Upload test result
uses: actions/upload-artifact@v4
@@ -253,11 +226,7 @@ jobs:
- name: Run Tests
working-directory: ./frontend
run: |
corepack enable;
corepack install;
yarn install;
yarn run playwright install chromium --with-deps;
yarn run test:e2e -x --workers=2 --reporter=list --shard "2/4";
./scripts/test-e2e --shard="2/4";
- name: Upload test result
uses: actions/upload-artifact@v4
@@ -287,11 +256,7 @@ jobs:
- name: Run Tests
working-directory: ./frontend
run: |
corepack enable;
corepack install;
yarn install;
yarn run playwright install chromium --with-deps;
yarn run test:e2e -x --workers=2 --reporter=list --shard "3/4";
./scripts/test-e2e --shard="3/4";
- name: Upload test result
uses: actions/upload-artifact@v4
@@ -303,7 +268,7 @@ jobs:
retention-days: 3
test-integration-4:
name: "Integration Tests 3/4"
name: "Integration Tests 4/4"
runs-on: ubuntu-24.04
container: penpotapp/devenv:latest
needs: build-integration
@@ -321,11 +286,7 @@ jobs:
- name: Run Tests
working-directory: ./frontend
run: |
corepack enable;
corepack install;
yarn install;
yarn run playwright install chromium --with-deps;
yarn run test:e2e -x --workers=2 --reporter=list --shard "4/4";
./scripts/test-e2e --shard="4/4";
- name: Upload test result
uses: actions/upload-artifact@v4

View File

@@ -87,6 +87,7 @@ example. It's still usable as before, we just removed the example.
- Fix problem with plugins generating code for pages different than current one [Taiga #12312](https://tree.taiga.io/project/penpot/issue/12312)
- Fix input confirmation behavior is not uniform [Taiga #12294](https://tree.taiga.io/project/penpot/issue/12294)
- Fix copy/pasting application/transit+json [Taiga #12721](https://tree.taiga.io/project/penpot/issue/12721)
- Fix problem with plugins content attribute [Plugins #209](https://github.com/penpot/penpot-plugins/issues/209)
## 2.11.1

7
common/scripts/test Executable file
View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -ex
corepack enable;
corepack install;
yarn install;
yarn run test;

View File

@@ -267,3 +267,4 @@
(-> (stp/convert-to-path shape objects)
(update :content impl/path-data))))
(dm/export impl/decode-segments)

View File

@@ -565,6 +565,9 @@
(def check-content
(sm/check-fn schema:content))
(def decode-segments
(sm/lazy-decoder schema:segments sm/json-transformer))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CONSTRUCTORS & PREDICATES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

9
frontend/scripts/test Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
set -ex
corepack enable;
corepack install;
yarn install;
yarn run lint:scss;
yarn run test;

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -ex
corepack enable;
corepack install;
yarn install;
yarn run playwright install chromium --with-deps;
yarn run build:storybook
exec npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" \
"npx http-server storybook-static --port 6006 --silent" \
"npx wait-on tcp:6006 && yarn test:storybook"

8
frontend/scripts/test-e2e Executable file
View File

@@ -0,0 +1,8 @@
#!/usr/bin/env bash
set -ex
corepack enable;
corepack install;
yarn install;
yarn run playwright install chromium --with-deps;
yarn run test:e2e -x --workers=2 --reporter=list "$@";

View File

@@ -7,6 +7,8 @@
(ns app.plugins.parser
(:require
[app.common.data :as d]
[app.common.json :as json]
[app.common.types.path :as path]
[app.common.uuid :as uuid]
[app.util.object :as obj]
[cuerdas.core :as str]))
@@ -514,3 +516,8 @@
(case axis
"horizontal" :y
"vertical" :x))
(defn parse-commands
[commands]
(-> (json/->clj commands)
(path/decode-segments)))

View File

@@ -1034,8 +1034,8 @@
(fn []
(let [shape (u/locate-shape file-id page-id id)]
(cond
(not (cfh/path-shape? shape))
(u/display-not-valid :makeMask (:type shape))
(and (not (cfh/path-shape? shape)) (not (cfh/bool-shape? shape)))
(u/display-not-valid :toD (:type shape))
:else
(.toString (:content shape)))))
@@ -1488,11 +1488,35 @@
(cond-> (or (cfh/path-shape? data) (cfh/bool-shape? data))
(crc/add-properties!
{:name "content"
{:name "commands"
:get #(-> % u/proxy->shape :content format/format-path-content)
:set
(fn [_ value]
(let [segments (parser/parse-commands value)]
(cond
(not (r/check-permission plugin-id "content:write"))
(u/display-not-valid :content "Plugin doesn't have 'content:write' permission")
(not (sm/validate path/schema:segments segments))
(u/display-not-valid :content segments)
:else
(let [selrect (path/calc-selrect segments)
content (path/from-plain segments)
points (grc/rect->points selrect)]
(st/emit! (dwsh/update-shapes
[id]
(fn [shape]
(-> shape
(assoc :content content)
(assoc :selrect selrect)
(assoc :points points)))))))))}
{:name "d"
:get #(-> % u/proxy->shape :content str)
:set
(fn [_ value]
(let [segments (if (string? value)
(let [segments
(if (string? value)
(svg.path/parse value)
value)]
(cond
@@ -1514,4 +1538,7 @@
(-> shape
(assoc :content content)
(assoc :selrect selrect)
(assoc :points points)))))))))}))))))
(assoc :points points)))))))))}
{:name "content"
:get #(.-d %)
:set (fn [self value] (set! (.-d self) value))}))))))

9
library/scripts/test Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
set -ex
corepack enable;
corepack install;
yarn install;
yarn run build:bundle;
yarn run test;

View File

@@ -11,14 +11,8 @@
},
"type": "module",
"scripts": {
"fmt:clj:check": "cljfmt check --parallel=true common/src/ common/test/ frontend/src/ frontend/test/ backend/src/ backend/test/ exporter/src/ library/src",
"fmt:clj": "cljfmt fix --parallel=true common/src/ common/test/ frontend/src/ frontend/test/ backend/src/ backend/test/ exporter/src/ library/src",
"lint:clj:common": "clj-kondo --parallel=true --lint common/src",
"lint:clj:frontend": "clj-kondo --parallel=true --lint frontend/src",
"lint:clj:backend": "clj-kondo --parallel=true --lint backend/src",
"lint:clj:exporter": "clj-kondo --parallel=true --lint exporter/src",
"lint:clj:library": "clj-kondo --parallel=true --lint library/src",
"lint:clj": "yarn run lint:clj:common && yarn run lint:clj:frontend && yarn run lint:clj:backend && yarn run lint:clj:exporter && yarn run lint:clj:library"
"lint": "./scripts/lint",
"fmt": "./scripts/fmt"
},
"devDependencies": {
"@types/node": "^20.12.7"

13
scripts/fmt Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -ex
cljfmt --parallel=true \
common/src/ \
common/test/ \
frontend/src/ \
frontend/test/ \
backend/src/ \
backend/test/ \
exporter/src/ \
library/src;

19
scripts/lint Executable file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
set -ex
cljfmt check --parallel=true \
common/src/ \
common/test/ \
frontend/src/ \
frontend/test/ \
backend/src/ \
backend/test/ \
exporter/src/ \
library/src;
clj-kondo --parallel=true --lint common/src;
clj-kondo --parallel=true --lint frontend/src;
clj-kondo --parallel=true --lint backend/src;
clj-kondo --parallel=true --lint exporter/src/;
clj-kondo --parallel=true --lint library/src;