diff --git a/end-to-end-tests/tests/pageEditor/addStarterBrick.spec.ts b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts
similarity index 98%
rename from end-to-end-tests/tests/pageEditor/addStarterBrick.spec.ts
rename to end-to-end-tests/tests/pageEditor/addNewMod.spec.ts
index e14b339e57..2fa9630150 100644
--- a/end-to-end-tests/tests/pageEditor/addStarterBrick.spec.ts
+++ b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts
@@ -25,7 +25,7 @@ import {
PRE_RELEASE_BROWSER_WORKFLOW_NAME,
} from "../../utils";
-test("Add new starter brick", async ({
+test("Add new mod and add starter bricks", async ({
page,
newPageEditorPage,
extensionId,
@@ -134,7 +134,7 @@ test("Add new starter brick", async ({
});
});
-test("Add starter brick to mod", async ({
+test("Add new mod, save, and then add starter bricks", async ({
page,
newPageEditorPage,
extensionId,
diff --git a/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-button-starter-brick-to-mod.yaml b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-button-starter-brick-to-mod.yaml
new file mode 100644
index 0000000000..cbf59399e0
--- /dev/null
+++ b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-button-starter-brick-to-mod.yaml
@@ -0,0 +1,75 @@
+kind: recipe
+options:
+ schema:
+ type: object
+ properties: {}
+ uiSchema:
+ ui:order:
+ - '*'
+metadata:
+ id: >-
+ @extension-e2e-test-unaffiliated/test-trigger-00000000-0000-0000-0000-000000000000-00000000-0000-0000-0000-000000000000
+ name: Test Trigger 00000000-0000-0000-0000-000000000000
+ version: 1.0.0
+ description: Created with the PixieBrix Page Editor
+variables:
+ schema:
+ type: object
+ properties: {}
+apiVersion: v3
+definitions:
+ extensionPoint:
+ kind: extensionPoint
+ definition:
+ type: trigger
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ isAvailable:
+ matchPatterns:
+ - https://pbx.vercel.app/*
+ urlPatterns: []
+ selectors: []
+ allFrames: true
+ trigger: load
+ background: true
+ reportMode: once
+ showErrors: true
+ extensionPoint2:
+ kind: extensionPoint
+ definition:
+ type: menuItem
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ isAvailable:
+ matchPatterns:
+ - https://pbx.vercel.app/*
+ urlPatterns: []
+ selectors: []
+ allFrames: true
+ containerSelector: ul:has(> * > a:contains('navigation'))
+ targetMode: document
+ attachMode: once
+ position: append
+ template:
{{{ caption }}}
+extensionPoints:
+ - label: Test Trigger 00000000-0000-0000-0000-000000000000
+ config:
+ action: []
+ id: extensionPoint
+ services: {}
+ - label: My pbx.vercel.app button
+ config:
+ caption: Action
+ action: []
+ dynamicCaption: false
+ onSuccess: true
+ synchronous: false
+ permissions:
+ origins: []
+ permissions: []
+ id: extensionPoint2
+ services: {}
\ No newline at end of file
diff --git a/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-context-menu-starter-brick-to-mod.diff b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-context-menu-starter-brick-to-mod.diff
new file mode 100644
index 0000000000..27c7ca828b
--- /dev/null
+++ b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-context-menu-starter-brick-to-mod.diff
@@ -0,0 +1,106 @@
+Index: add-context-menu-starter-brick-to-mod
+===================================================================
+--- add-context-menu-starter-brick-to-mod
++++ add-context-menu-starter-brick-to-mod
+@@ -1,75 +1,101 @@
+ apiVersion: v3
+ definitions:
+ extensionPoint:
+ definition:
+ background: true
+ isAvailable:
+ allFrames: true
+ matchPatterns:
+ - https://pbx.vercel.app/*
+ selectors: []
+ urlPatterns: []
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ reportMode: once
+ showErrors: true
+ trigger: load
+ type: trigger
+ kind: extensionPoint
+ extensionPoint2:
+ definition:
+ attachMode: once
+ containerSelector: ul:has(> * > a:contains('navigation'))
+ isAvailable:
+ allFrames: true
+ matchPatterns:
+ - https://pbx.vercel.app/*
+ selectors: []
+ urlPatterns: []
+ position: append
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ targetMode: document
+ template: {{{ caption }}}
+ type: menuItem
+ kind: extensionPoint
++ extensionPoint3:
++ definition:
++ contexts:
++ - all
++ documentUrlPatterns:
++ - '*://*/*'
++ isAvailable:
++ allFrames: true
++ matchPatterns:
++ - '*://*/*'
++ selectors: []
++ urlPatterns: []
++ reader:
++ - '@pixiebrix/document-metadata'
++ - '@pixiebrix/document-context'
++ - element: '@pixiebrix/html/element'
++ targetMode: eventTarget
++ type: contextMenu
++ kind: extensionPoint
+ extensionPoints:
+ - config:
+ action: []
+ id: extensionPoint
+ label: Test Trigger 00000000-0000-0000-0000-000000000000
+ services: {}
+ - config:
+ action: []
+ caption: Action
+ dynamicCaption: false
+ onSuccess: true
+ synchronous: false
+ id: extensionPoint2
+ label: My pbx.vercel.app button
++ services: {}
++ - config:
++ action: []
++ onSuccess: true
++ title: Context menu item
++ id: extensionPoint3
++ label: Context menu item
+ permissions:
+ origins: []
+ permissions: []
+ services: {}
+ kind: recipe
+ metadata:
+ description: Created with the PixieBrix Page Editor
+ id: >-
+ @extension-e2e-test-unaffiliated/test-trigger-00000000-0000-0000-0000-000000000000-00000000-0000-0000-0000-000000000000
+ name: Test Trigger 00000000-0000-0000-0000-000000000000
+ version: 1.0.0
+ options:
+ schema:
+ properties: {}
+ type: object
+ uiSchema:
+ ui:order:
+ - '*'
+ variables:
+ schema:
+ properties: {}
+ type: object
diff --git a/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-quick-bar-starter-brick-to-mod.diff b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-quick-bar-starter-brick-to-mod.diff
new file mode 100644
index 0000000000..f6087a26c1
--- /dev/null
+++ b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-quick-bar-starter-brick-to-mod.diff
@@ -0,0 +1,114 @@
+Index: add-quick-bar-starter-brick-to-mod
+===================================================================
+--- add-quick-bar-starter-brick-to-mod
++++ add-quick-bar-starter-brick-to-mod
+@@ -19,83 +19,109 @@
+ type: trigger
+ kind: extensionPoint
+ extensionPoint2:
+ definition:
+ attachMode: once
+ containerSelector: ul:has(> * > a:contains('navigation'))
+ isAvailable:
+ allFrames: true
+ matchPatterns:
+ - https://pbx.vercel.app/*
+ selectors: []
+ urlPatterns: []
+ position: append
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ targetMode: document
+ template: {{{ caption }}}
+ type: menuItem
+ kind: extensionPoint
+ extensionPoint3:
+ definition:
+ contexts:
+ - all
+ documentUrlPatterns:
+ - '*://*/*'
+ isAvailable:
+ allFrames: true
+ matchPatterns:
+ - '*://*/*'
+ selectors: []
+ urlPatterns: []
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ targetMode: eventTarget
+ type: contextMenu
+ kind: extensionPoint
++ extensionPoint4:
++ definition:
++ contexts:
++ - all
++ documentUrlPatterns:
++ - '*://*/*'
++ isAvailable:
++ allFrames: true
++ matchPatterns:
++ - '*://*/*'
++ selectors: []
++ urlPatterns: []
++ reader:
++ - '@pixiebrix/document-metadata'
++ - '@pixiebrix/document-context'
++ - element: '@pixiebrix/html/element'
++ - '@pixiebrix/selection'
++ targetMode: eventTarget
++ type: quickBar
++ kind: extensionPoint
+ extensionPoints:
+ - config:
+ action: []
+ id: extensionPoint
+ label: Test Trigger 00000000-0000-0000-0000-000000000000
+ services: {}
+ - config:
+ action: []
+ caption: Action
+ dynamicCaption: false
+ onSuccess: true
+ synchronous: false
+ id: extensionPoint2
+ label: My pbx.vercel.app button
+ services: {}
+ - config:
+ action: []
+ onSuccess: true
+ title: Context menu item
+ id: extensionPoint3
+ label: Context menu item
++ services: {}
++ - config:
++ action: []
++ title: Quick Bar item
++ id: extensionPoint4
++ label: Quick Bar item
+ permissions:
+ origins: []
+ permissions: []
+ services: {}
+ kind: recipe
+ metadata:
+ description: Created with the PixieBrix Page Editor
+ id: >-
+ @extension-e2e-test-unaffiliated/test-trigger-00000000-0000-0000-0000-000000000000-00000000-0000-0000-0000-000000000000
+ name: Test Trigger 00000000-0000-0000-0000-000000000000
+ version: 1.0.0
+ options:
+ schema:
+ properties: {}
+ type: object
+ uiSchema:
+ ui:order:
+ - '*'
+ variables:
+ schema:
+ properties: {}
+ type: object
diff --git a/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-sidebar-panel-starter-brick-to-mod.diff b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-sidebar-panel-starter-brick-to-mod.diff
new file mode 100644
index 0000000000..a540a3c81a
--- /dev/null
+++ b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-sidebar-panel-starter-brick-to-mod.diff
@@ -0,0 +1,146 @@
+Index: add-sidebar-panel-starter-brick-to-mod
+===================================================================
+--- add-sidebar-panel-starter-brick-to-mod
++++ add-sidebar-panel-starter-brick-to-mod
+@@ -39,89 +39,141 @@
+ kind: extensionPoint
+ extensionPoint3:
+ definition:
+ contexts:
+ - all
+ documentUrlPatterns:
+ - '*://*/*'
+ isAvailable:
+ allFrames: true
+ matchPatterns:
+ - '*://*/*'
+ selectors: []
+ urlPatterns: []
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ targetMode: eventTarget
+ type: contextMenu
+ kind: extensionPoint
+ extensionPoint4:
+ definition:
+ contexts:
+ - all
+ documentUrlPatterns:
+ - '*://*/*'
+ isAvailable:
+ allFrames: true
+ matchPatterns:
+ - '*://*/*'
+ selectors: []
+ urlPatterns: []
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ - '@pixiebrix/selection'
+ targetMode: eventTarget
+ type: quickBar
+ kind: extensionPoint
++ extensionPoint5:
++ definition:
++ customEvent: null
++ debounce:
++ leading: false
++ trailing: true
++ waitMillis: 250
++ isAvailable:
++ allFrames: true
++ matchPatterns:
++ - '*://*/*'
++ selectors: []
++ urlPatterns: []
++ reader:
++ - '@pixiebrix/document-metadata'
++ - '@pixiebrix/document-context'
++ trigger: load
++ type: actionPanel
++ kind: extensionPoint
+ extensionPoints:
+ - config:
+ action: []
+ id: extensionPoint
+ label: Test Trigger 00000000-0000-0000-0000-000000000000
+ services: {}
+ - config:
+ action: []
+ caption: Action
+ dynamicCaption: false
+ onSuccess: true
+ synchronous: false
+ id: extensionPoint2
+ label: My pbx.vercel.app button
+ services: {}
+ - config:
+ action: []
+ onSuccess: true
+ title: Context menu item
+ id: extensionPoint3
+ label: Context menu item
+ services: {}
+ - config:
+ action: []
+ title: Quick Bar item
+ id: extensionPoint4
+ label: Quick Bar item
++ services: {}
++ - config:
++ body:
++ - config:
++ body:
++ - children:
++ - children:
++ - children:
++ - config:
++ heading: h1
++ title: Example document
++ type: header
++ config: {}
++ type: column
++ config: {}
++ type: row
++ - children:
++ - children:
++ - config:
++ enableMarkdown: true
++ text: Example text element. **Markdown** is supported.
++ type: text
++ config: {}
++ type: column
++ config: {}
++ type: row
++ config: {}
++ type: container
++ id: '@pixiebrix/document'
++ rootMode: document
++ heading: Sidebar Panel
++ id: extensionPoint5
++ label: Sidebar Panel
+ permissions:
+ origins: []
+ permissions: []
+ services: {}
+ kind: recipe
+ metadata:
+ description: Created with the PixieBrix Page Editor
+ id: >-
+ @extension-e2e-test-unaffiliated/test-trigger-00000000-0000-0000-0000-000000000000-00000000-0000-0000-0000-000000000000
+ name: Test Trigger 00000000-0000-0000-0000-000000000000
+ version: 1.0.0
+ options:
+ schema:
+ properties: {}
+ type: object
+ uiSchema:
+ ui:order:
+ - '*'
+ variables:
+ schema:
+ properties: {}
+ type: object
diff --git a/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-trigger-starter-brick-to-mod.diff b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-trigger-starter-brick-to-mod.diff
new file mode 100644
index 0000000000..61871e53e4
--- /dev/null
+++ b/end-to-end-tests/tests/pageEditor/addNewMod.spec.ts-snapshots/Add-new-mod-save-and-then-add-starter-bricks/add-trigger-starter-brick-to-mod.diff
@@ -0,0 +1,127 @@
+Index: add-trigger-starter-brick-to-mod
+===================================================================
+--- add-trigger-starter-brick-to-mod
++++ add-trigger-starter-brick-to-mod
+@@ -66,114 +66,119 @@
+ allFrames: true
+ matchPatterns:
+ - '*://*/*'
+ selectors: []
+ urlPatterns: []
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ - element: '@pixiebrix/html/element'
+ - '@pixiebrix/selection'
+ targetMode: eventTarget
+ type: quickBar
+ kind: extensionPoint
+ extensionPoint5:
+ definition:
+ customEvent: null
+ debounce:
+ leading: false
+ trailing: true
+ waitMillis: 250
+ isAvailable:
+ allFrames: true
+ matchPatterns:
+ - '*://*/*'
+ selectors: []
+ urlPatterns: []
+ reader:
+ - '@pixiebrix/document-metadata'
+ - '@pixiebrix/document-context'
+ trigger: load
+ type: actionPanel
+ kind: extensionPoint
+ extensionPoints:
+ - config:
+ action: []
+ id: extensionPoint
+ label: Test Trigger 00000000-0000-0000-0000-000000000000
+ services: {}
+ - config:
+ action: []
++ id: extensionPoint
++ label: My pbx.vercel.app trigger
++ permissions:
++ origins: []
++ permissions: []
++ services: {}
++ - config:
++ action: []
+ caption: Action
+ dynamicCaption: false
+ onSuccess: true
+ synchronous: false
+ id: extensionPoint2
+ label: My pbx.vercel.app button
+ services: {}
+ - config:
+ action: []
+ onSuccess: true
+ title: Context menu item
+ id: extensionPoint3
+ label: Context menu item
+ services: {}
+ - config:
+ action: []
+ title: Quick Bar item
+ id: extensionPoint4
+ label: Quick Bar item
+ services: {}
+ - config:
+ body:
+ - config:
+ body:
+ - children:
+ - children:
+ - children:
+ - config:
+ heading: h1
+ title: Example document
+ type: header
+ config: {}
+ type: column
+ config: {}
+ type: row
+ - children:
+ - children:
+ - config:
+ enableMarkdown: true
+ text: Example text element. **Markdown** is supported.
+ type: text
+ config: {}
+ type: column
+ config: {}
+ type: row
+ config: {}
+ type: container
+ id: '@pixiebrix/document'
+ rootMode: document
+ heading: Sidebar Panel
+ id: extensionPoint5
+ label: Sidebar Panel
+- permissions:
+- origins: []
+- permissions: []
+ services: {}
+ kind: recipe
+ metadata:
+ description: Created with the PixieBrix Page Editor
+ id: >-
+ @extension-e2e-test-unaffiliated/test-trigger-00000000-0000-0000-0000-000000000000-00000000-0000-0000-0000-000000000000
+ name: Test Trigger 00000000-0000-0000-0000-000000000000
+ version: 1.0.0
+ options:
+ schema:
+ properties: {}
+ type: object
+ uiSchema:
+ ui:order:
+ - '*'
+ variables:
+ schema:
+ properties: {}
+ type: object