[pull] main from TryGhost:main#1018
Merged
Merged
Conversation
closes https://linear.app/ghost/issue/NY-1181/add-email-design-setting-permissions Adds CRUD permissions for the new `email_design_setting` resource, restricted to `Administrator` and `Admin Integration` roles. **Changes:** - Added database migration to create browse, read, edit, add, and destroy permissions for `email_design_setting` - Updated fixtures to include the new permissions and assign them to Administrator and Admin Integration roles - Updated fixtures hash in integrity test
closes https://linear.app/ghost/issue/NY-1180/add-email-design-setting-id-fk-to-automated-emails ## Summary - Added nullable `email_design_setting_id` FK column to `automated_emails` table - Plan to backfill all existing `automated_emails` rows with the default `email_design_settings` row, then make this column non-nullable in two follow up migration PRs to come. Stacked on #27006
…7022) closes https://linear.app/ghost/issue/NY-1184/backfill-the-email-design-setting-id-column-on-automated-emails-table Stacked on #27008 ## Summary - Added a backfill migration that sets `email_design_setting_id` to the default email design setting (`default-automated-email` slug) for all existing `automated_emails` rows - Added an `onCreating` hook to the `AutomatedEmail` model that auto-assigns the default email design setting when none is provided - Added test fixtures for `EmailDesignSetting` and updated e2e API snapshots - Added unit tests for the `onCreating` behavior ## Test plan - [x] Unit tests for `onCreating` hook (default assignment, custom ID preserved, missing default throws) - [x] Updated e2e API snapshots include `email_design_setting_id` in responses - [x] Backfill migration has reversible `down` function
…mated_emails` table (#27033) closes https://linear.app/ghost/issue/NY-1185/drop-nullable-on-the-email-design-setting-id-column-on-automated ## Summary - Changed `email_design_setting_id` column on `automated_emails` table from nullable to non-nullable - Added a database migration using `createDropNullableMigration` to alter the column constraint - Updated schema definition and schema integrity hash This is the final step after backfilling existing rows in #27022, completing the column constraint tightening. ## Test plan - [x] Schema integrity test updated with new hash - [x] Run `yarn test:unit` in `ghost/core` to verify schema integrity - [x] Run migration against a database with existing `automated_emails` rows to confirm no errors
…nce tests (#27034) ref https://github.com/TryGhost/Ghost/actions/runs/23812667343/attempts/1 We had a flaky test. In general, these browser tests have been incredibly fussy. I'm going to look at shifting more of them into acceptance/component tests rather than E2E and pare E2E back to more of the 'core' workflow/validation. - Refactored 4 visibility/access e2e tests to create posts via the Admin API instead of driving the full admin UI (editor → settings sidebar → dropdown → publish flow), eliminating the `waitForResponse`, `waitForFunction`, and `clearVisibilityTiers` workarounds that were causing CI flakiness - Added `tiers` field to the e2e `Post` interface so the factory can create posts with tier-based visibility directly - Added Ember acceptance tests for the editor sidebar visibility dropdown (members, paid, tiers selector appearance, API save verification) to cover the UI interaction removed from e2e - Kept the publish-flow e2e tests (publish-only, email-only, schedule, update) as full UI flows since the modal interaction is what they test
) ref https://linear.app/ghost/issue/PLA-10/ The test verifies that the post settings menu date-time-picker displays the correct time when the site timezone changes. This is a client-side formatting concern that doesn't need a full browser e2e test — Mirage can mock the settings and post data directly - it likely never should've been an e2e test.
…27037) ref https://linear.app/ghost/issue/PLA-10/ The test verifies that the publish flow defaults to "Publish" (not "Publish and email") when newsletter defaults are set to "Usually nobody" — this is a client-side setting read that Mirage can mock directly.
ref https://linear.app/ghost/issue/PLA-10/ - Removes the entire `ghost/core/test/e2e-browser/` directory and all associated infrastructure - Removes the `job_browser-tests` CI workflow job (saves ~60min CI time per run) - Removes `@playwright/test` devDependency from ghost/core - Removes `test:browser` scripts from root and ghost/core package.json - Removes Playwright config, browser test runner script, and Nx browser test targets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )