From b5b4c3505339d334f74746db20452c0820c310d4 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 7 Jul 2025 16:42:26 -0400
Subject: [PATCH 1/6] chore(deps): update dependency @capacitor/core to v7.4.1
(#30530)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| [@capacitor/core](https://capacitorjs.com)
([source](https://redirect.github.com/ionic-team/capacitor)) | [`7.4.0`
->
`7.4.1`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/7.4.0/7.4.1)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
---
### Release Notes
ionic-team/capacitor (@capacitor/core)
###
[`v7.4.1`](https://redirect.github.com/ionic-team/capacitor/blob/HEAD/CHANGELOG.md#741-2025-07-03)
[Compare
Source](https://redirect.github.com/ionic-team/capacitor/compare/7.4.0...7.4.1)
**Note:** Version bump only for package capacitor
---
### Configuration
📅 **Schedule**: Branch creation - "every weekday before 11am" (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
â™» **Rebasing**: Never, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/ionic-team/ionic-framework).
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
core/package-lock.json | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/core/package-lock.json b/core/package-lock.json
index 5164df400d..ac1aaa3065 100644
--- a/core/package-lock.json
+++ b/core/package-lock.json
@@ -663,9 +663,9 @@
"dev": true
},
"node_modules/@capacitor/core": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.0.tgz",
- "integrity": "sha512-P6NnjoHyobZgTjynlZSn27d0SUj6j38inlNxFnKZr9qwU7/r6+0Sg2nWkGkIH/pMmXHsvGD8zVe6KUq1UncIjA==",
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.1.tgz",
+ "integrity": "sha512-0ap4FzPJItaeg3QiiS1WguPNHY2aD67fQ9wr7DojCRzTFuNXQPvFB6lBkqlrVeQyJ9jCw0KV/LXv25oXjDcsyA==",
"dev": true,
"dependencies": {
"tslib": "^2.1.0"
@@ -11101,9 +11101,9 @@
"dev": true
},
"@capacitor/core": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.0.tgz",
- "integrity": "sha512-P6NnjoHyobZgTjynlZSn27d0SUj6j38inlNxFnKZr9qwU7/r6+0Sg2nWkGkIH/pMmXHsvGD8zVe6KUq1UncIjA==",
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.4.1.tgz",
+ "integrity": "sha512-0ap4FzPJItaeg3QiiS1WguPNHY2aD67fQ9wr7DojCRzTFuNXQPvFB6lBkqlrVeQyJ9jCw0KV/LXv25oXjDcsyA==",
"dev": true,
"requires": {
"tslib": "^2.1.0"
From 498f7c7ab2cb300dd905b4f2f498ec912c6bc019 Mon Sep 17 00:00:00 2001
From: Brandy Smith
Date: Tue, 8 Jul 2025 15:30:52 -0400
Subject: [PATCH 2/6] chore(ci): update PR title check to exclude chore and
release titles (#30528)
Updates our PR title check to ignore titles with `chore` or `release` in
them, eliminating the need for a `release` label on release PRs &
allowing us to write commits like `chore: update dependency`.
I also specified which commit types are allowed and included `chore` and
`release` here even though they are skipped in case we ever remove the
if skipping them.
Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
---
.github/workflows/conventional-commit.yml | 31 +++++++++++++++--------
1 file changed, 21 insertions(+), 10 deletions(-)
diff --git a/.github/workflows/conventional-commit.yml b/.github/workflows/conventional-commit.yml
index fe310a565a..f044cbd1db 100644
--- a/.github/workflows/conventional-commit.yml
+++ b/.github/workflows/conventional-commit.yml
@@ -9,24 +9,35 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Validate PR title
- uses: amannn/action-semantic-pull-request@v5
+ if: |
+ !contains(github.event.pull_request.title, 'release') &&
+ !contains(github.event.pull_request.title, 'chore')
+ uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# Configure that a scope must always be provided.
requireScope: true
+ # Configure allowed commit types
+ types: |
+ feat
+ fix
+ docs
+ style
+ refactor
+ perf
+ test
+ build
+ ci
+ revert
+ release
+ chore
# Configure additional validation for the subject based on a regex.
# This example ensures the subject doesn't start with an uppercase character.
subjectPattern: ^(?![A-Z]).+$
- # If `subjectPattern` is configured, you can use this property to
- # override the default error message that is shown when the pattern
- # doesn't match. The variables `subject` and `title` can be used
+ # If `subjectPattern` is configured, you can use this property to
+ # override the default error message that is shown when the pattern
+ # doesn't match. The variables `subject` and `title` can be used
# within the message.
subjectPatternError: |
The subject "{subject}" found in the pull request title "{title}" didn't match the configured pattern. Please ensure that the subject doesn't start with an uppercase character.
- # If the PR contains one of these newline-delimited labels, the
- # validation is skipped. If you want to rerun the validation when
- # labels change, you might want to use the `labeled` and `unlabeled`
- # event triggers in your workflow.
- ignoreLabels: |
- release
From 73f7b3f8394c1675f753081894ae3369c6cebf63 Mon Sep 17 00:00:00 2001
From: Brandy Smith
Date: Tue, 8 Jul 2025 16:18:23 -0400
Subject: [PATCH 3/6] test(item-sliding): add test for side issue with CDN
(#30469)
Adds test for https://github.com/ionic-team/ionic-framework/pull/29845
Must be merged after the fix in that PR is released. The test will fail
while using the older version of the CDN.
---------
Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com>
---
.../test/async/item-sliding.e2e.ts | 83 +++++++++++++++++++
.../test/playwright/page/utils/set-content.ts | 24 +++++-
.../playwright/playwright-declarations.ts | 6 ++
3 files changed, 111 insertions(+), 2 deletions(-)
diff --git a/core/src/components/item-sliding/test/async/item-sliding.e2e.ts b/core/src/components/item-sliding/test/async/item-sliding.e2e.ts
index aa44b11292..ef3f5b8475 100644
--- a/core/src/components/item-sliding/test/async/item-sliding.e2e.ts
+++ b/core/src/components/item-sliding/test/async/item-sliding.e2e.ts
@@ -1,6 +1,9 @@
import { expect } from '@playwright/test';
import { configs, test } from '@utils/test/playwright';
+/**
+ * This behavior does not vary across modes/directions
+ */
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('item-sliding: async'), () => {
test.beforeEach(async ({ page }) => {
@@ -35,5 +38,85 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
await expect(itemSlidingEl).toHaveClass(/item-sliding-active-slide/);
});
+
+ // NOTE: This test uses the CDN version of Ionic.
+ // If this test fails, it is likely due to a regression in the published package.
+ test('should not throw errors when adding multiple items with side="end" using the Ionic CDN', async ({
+ page,
+ }, testInfo) => {
+ testInfo.annotations.push({
+ type: 'issue',
+ description: 'https://github.com/ionic-team/ionic-framework/issues/29499',
+ });
+
+ const errors: string[] = [];
+ page.on('console', (msg) => {
+ if (msg.type() === 'error') {
+ errors.push(msg.text());
+ }
+ });
+ page.on('pageerror', (error) => {
+ errors.push(error.message);
+ });
+
+ // This issue only happens when using a CDN version of Ionic
+ // so we need to use the CDN by passing the `importIonicFromCDN` option
+ // to setContent.
+ await page.setContent(
+ `
+
+
+ Item Sliding
+
+ ADD ITEM
+
+
+
+
+
+
+
+
+ `,
+ { ...config, importIonicFromCDN: true }
+ );
+
+ // Click the button enough times to reproduce the issue
+ const addButton = page.locator('#addItem');
+ await addButton.click();
+ await addButton.click();
+ await addButton.click();
+
+ await page.waitForChanges();
+
+ // Check that the items have been added
+ const items = page.locator('ion-item-sliding');
+ expect(await items.count()).toBe(3);
+
+ // Check that no errors have been logged
+ expect(errors.length).toBe(0);
+ });
});
});
diff --git a/core/src/utils/test/playwright/page/utils/set-content.ts b/core/src/utils/test/playwright/page/utils/set-content.ts
index b844bac81f..b738133e73 100644
--- a/core/src/utils/test/playwright/page/utils/set-content.ts
+++ b/core/src/utils/test/playwright/page/utils/set-content.ts
@@ -33,6 +33,26 @@ export const setContent = async (page: Page, html: string, testInfo: TestInfo, o
const baseUrl = process.env.PLAYWRIGHT_TEST_BASE_URL;
+ // The Ionic bundle is included locally by default unless the test
+ // config passes in the importIonicFromCDN option. This is useful
+ // when testing with the CDN version of Ionic.
+ let ionicCSSImports = `
+
+ `;
+ let ionicJSImports = `
+
+ `;
+
+ if (options?.importIonicFromCDN) {
+ ionicCSSImports = `
+
+ `;
+ ionicJSImports = `
+
+
+ `;
+ }
+
const output = `
@@ -40,11 +60,11 @@ export const setContent = async (page: Page, html: string, testInfo: TestInfo, o
Ionic Playwright Test
-
+ ${ionicCSSImports}
${palette !== 'light' ? `` : ''}
-
+ ${ionicJSImports}