Skip to content

Fix E2E: wp-env reset on cache-restore fresh DB so GF REST enables#1662

Merged
jakejackson1 merged 1 commit into
developmentfrom
fix/e2e-gf-rest-api-enable-timing
Jun 5, 2026
Merged

Fix E2E: wp-env reset on cache-restore fresh DB so GF REST enables#1662
jakejackson1 merged 1 commit into
developmentfrom
fix/e2e-gf-rest-api-enable-timing

Conversation

@jakejackson1

@jakejackson1 jakejackson1 commented Jun 4, 2026

Copy link
Copy Markdown
Member

Problem

The Playwright E2E shards fail intermittently with rest_no_route for /gf/v2/* — but the pattern is not random. They fail whenever the wp-env work-directory cache is restored (a cache hit), and pass on a cache miss.

The work-dir cache is keyed on hashFiles('tools/wp-env/e2e.json', 'composer.lock'), but the MySQL volume is not cached. So a restored work-dir pairs with a fresh, empty database. The existing fallback ran a bare wp core install, which installs WordPress core but skips wp-env's full configure path — leaving Gravity Forms half-configured. The result: the gravityformsaddon_gravityformswebapi_settings option never persists, is_v2_enabled stays false, and the gf/v2 REST routes never register.

This was masked because a fresh CI run (cold cache) installs everything correctly; only cache-hit runs regressed.

Fix

In the cache-fallback step, run wp-env's own reset instead of a bare wp core install. wp-env reset performs the full database reinstall + configure path (and the afterReset lifecycle hook), matching a fresh wp-env start.

Verification

Confirmed on a cache-hit run (diagnostic, since removed):

fallback:  cache hit a fresh DB volume — running wp-env reset
           ✔ Executing afterReset Script
webapi:    {"enabled":"1","version":"v2"}
is_v2_enabled=true  gf_v2_route=true

All 4 Playwright shards green.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown

Coverage report for commit: 0364c4a
File: ./tmp/jest-coverage/clover.xml

Cover ┌─────────────────────────┐ Freq.
   0% │ ░░░░░░░░░░░░░░░░░░░░░░░ │  0.0%
  10% │ ░░░░░░░░░░░░░░░░░░░░░░░ │  0.0%
  20% │ ░░░░░░░░░░░░░░░░░░░░░░░ │  0.0%
  30% │ ░░░░░░░░░░░░░░░░░░░░░░░ │  0.0%
  40% │ ░░░░░░░░░░░░░░░░░░░░░░░ │  0.0%
  50% │ ░░░░░░░░░░░░░░░░░░░░░░░ │  0.0%
  60% │ ░░░░░░░░░░░░░░░░░░░░░░░ │  0.0%
  70% │ █░░░░░░░░░░░░░░░░░░░░░░ │  1.6%
  80% │ ███░░░░░░░░░░░░░░░░░░░░ │  8.2%
  90% │ ████████░░░░░░░░░░░░░░░ │ 21.3%
 100% │ ███████████████████████ │ 68.9%
      └─────────────────────────┘
 *Legend:* █ = Current Distribution 
Summary - Lines: 92.96% | Methods: 88.24% | Branches: 81.37%
FilesLinesMethodsBranches
src/assets/js/react/actions
   coreFonts.js100.00%100.00%100.00%
   fontManager.js100.00%100.00%100.00%
   templates.js100.00%100.00%100.00%
src/assets/js/react/components/Alert
   Alert.js100.00%100.00%100.00%
src/assets/js/react/components/CoreFonts
   CoreFontContainer.js100.00%100.00%91.43%
   CoreFontCounter.js100.00%100.00%100.00%
   CoreFontListResults.js100.00%100.00%85.71%
   CoreFontListSpacer.js100.00%100.00%100.00%
src/assets/js/react/components
   Empty.js100.00%100.00%100.00%
   ShowMessage.js79.31%80.00%64.29%
   Spinner.js100.00%100.00%100.00%
src/assets/js/react/components/FontManager
   AddFont.js100.00%100.00%100.00%
   AddUpdateFontFooter.js85.37%50.00%88.89%
   AdvancedButton.js100.00%100.00%100.00%
   FontList.js100.00%50.00%65.22%
   FontListAlertMessage.js100.00%100.00%100.00%
   FontListHeader.js100.00%100.00%100.00%
   FontListIcon.js100.00%100.00%100.00%
   FontListItems.js85.39%64.00%68.66%
   FontListSkeleton.js100.00%100.00%100.00%
   FontManager.js77.78%57.14%50.00%
   FontManagerBody.js94.20%96.43%90.29%
   FontManagerHeader.js100.00%100.00%100.00%
   FontVariant.js90.00%60.00%70.00%
   FontVariantLabel.js100.00%100.00%100.00%
   InitialAddUpdateState.js100.00%100.00%100.00%
   SearchBox.js90.00%66.67%69.23%
   TemplateTooltip.js100.00%75.00%100.00%
   UpdateFont.js75.00%50.00%75.00%
src/assets/js/react/components/Modal
   CloseDialog.js93.33%66.67%70.59%
src/assets/js/react/components/Template
   TemplateActivateButton.js100.00%100.00%100.00%
   TemplateButton.js85.71%66.67%100.00%
   TemplateContainer.js71.43%66.67%25.00%
   TemplateDeleteButton.js100.00%100.00%70.00%
   TemplateFooterActions.js100.00%100.00%100.00%
   TemplateHeaderNavigation.js82.35%85.71%70.00%
   TemplateHeaderTitle.js100.00%100.00%100.00%
   TemplateList.js100.00%100.00%60.00%
   TemplateListItem.js100.00%100.00%92.86%
   TemplateListItemComponents.js100.00%100.00%100.00%
   TemplateScreenshot.js100.00%100.00%100.00%
   TemplateScreenshots.js100.00%100.00%50.00%
   TemplateSearch.js93.75%88.89%50.00%
   TemplateSingle.js100.00%100.00%100.00%
   TemplateSingleComponents.js100.00%100.00%75.00%
   TemplateUploader.js98.04%100.00%86.67%
src/assets/js/react/reducers
   coreFontReducer.js95.65%100.00%88.00%
   fontManagerReducer.js87.21%75.00%75.00%
   index.js100.00%100.00%100.00%
   templateReducer.js100.00%100.00%100.00%
src/assets/js/react/sagas
   coreFonts.js91.67%100.00%75.00%
   fontManager.js86.96%90.00%83.33%
   index.js100.00%100.00%100.00%
   templates.js83.33%100.00%100.00%
src/assets/js/react/selectors
   getTemplates.js91.11%100.00%83.33%
src/assets/js/react/utilities/FontManager
   adjustFontListHeight.js100.00%100.00%100.00%
   associatedFontManagerSelectBox.js94.44%100.00%66.67%
   fontManagerReducer.js100.00%100.00%100.00%
   getTabLocation.js100.00%100.00%100.00%
   toggleUpdateFont.js100.00%100.00%100.00%
src/assets/js/react/utilities
   withRouterHooks.js100.00%100.00%100.00%

🤖 Jest coverage report

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown

Coverage report for commit: 0364c4a
File: tmp/coverage/report-xml/merged.xml

Cover ┌─────────────────────────┐ Freq.
   0% │ ██████████░░░░░░░░░░░░░ │ 11.5%
  10% │ █░░░░░░░░░░░░░░░░░░░░░░ │  1.0%
  20% │ █░░░░░░░░░░░░░░░░░░░░░░ │  0.5%
  30% │ ██░░░░░░░░░░░░░░░░░░░░░ │  1.4%
  40% │ █░░░░░░░░░░░░░░░░░░░░░░ │  0.5%
  50% │ ███████░░░░░░░░░░░░░░░░ │  8.2%
  60% │ ██░░░░░░░░░░░░░░░░░░░░░ │  1.4%
  70% │ ███████░░░░░░░░░░░░░░░░ │  7.7%
  80% │ ████████████████░░░░░░░ │ 19.7%
  90% │ ███████████████████████ │ 28.8%
 100% │ ████████████████░░░░░░░ │ 19.2%
      └─────────────────────────┘
 *Legend:* █ = Current Distribution 
Summary - Lines: 82.18% | Methods: 88.63%
FilesLinesMethodsBranches
/var/www/html/wp-content/plugins/gravity-pdf
   api.php96.24%100.00%100.00%
   gravity-pdf-updater.php27.50%100.00%100.00%
   pdf.php60.34%87.50%100.00%
/var/www/html/wp-content/plugins/gravity-pdf/src/Controller
   Controller_Actions.php100.00%100.00%100.00%
   Controller_Activation.php95.45%100.00%100.00%
   Controller_Custom_Fonts.php88.52%100.00%100.00%
   Controller_Debug.php100.00%100.00%100.00%
   Controller_Export_Entries.php96.67%100.00%100.00%
   Controller_Form_Settings.php86.05%90.00%100.00%
   Controller_Install.php100.00%100.00%100.00%
   Controller_Mergetags.php100.00%100.00%100.00%
   Controller_PDF.php82.05%100.00%100.00%
   Controller_Pdf_Queue.php83.72%77.78%100.00%
   Controller_Save_Core_Fonts.php66.67%100.00%100.00%
   Controller_Settings.php80.23%100.00%100.00%
   Controller_Shortcodes.php100.00%100.00%100.00%
   Controller_System_Report.php100.00%100.00%100.00%
   Controller_Templates.php100.00%100.00%100.00%
   Controller_Uninstaller.php83.33%77.78%100.00%
   Controller_Upgrade_Routines.php93.33%100.00%100.00%
   Controller_Webhooks.php100.00%100.00%100.00%
   Controller_Zapier.php100.00%100.00%100.00%
/var/www/html/wp-content/plugins/gravity-pdf/src/Exceptions
   GravityPdfDatabaseUpdateException.php50.00%100.00%100.00%
   GravityPdfDomainException.php50.00%100.00%100.00%
   GravityPdfException.php50.00%100.00%100.00%
   GravityPdfFontNotFoundException.php50.00%100.00%100.00%
   GravityPdfIdException.php50.00%100.00%100.00%
   GravityPdfModelNotUpdatedException.php50.00%100.00%100.00%
   GravityPdfRuntimeException.php50.00%100.00%100.00%
   GravityPdfShortcodeEntryIdException.php50.00%100.00%100.00%
   GravityPdfShortcodePdfConditionalLogicFailedException.php50.00%100.00%100.00%
   GravityPdfShortcodePdfConfigNotFoundException.php50.00%100.00%100.00%
   GravityPdfShortcodePdfInactiveException.php50.00%100.00%100.00%
/var/www/html/wp-content/plugins/gravity-pdf/src/Helper/Fields
   Field_Address.php92.16%100.00%100.00%
   Field_Chainedselect.php66.67%75.00%100.00%
   Field_Checkbox.php94.34%100.00%100.00%
   Field_Consent.php89.47%100.00%100.00%
   Field_Coupon.php--100.00%
   Field_Creditcard.php83.33%100.00%100.00%
   Field_Date.php83.33%100.00%100.00%
   Field_Default.php83.33%100.00%100.00%
   Field_Discount.php44.00%75.00%100.00%
   Field_Email.php83.33%100.00%100.00%
   Field_Fg_Ls_Consent.php92.86%100.00%100.00%
   Field_Fg_Ls_Signature.php73.08%66.67%100.00%
   Field_Fileupload.php94.23%100.00%100.00%
   Field_Form.php89.09%100.00%100.00%
   Field_Hidden.php81.82%100.00%100.00%
   Field_Html.php89.47%100.00%100.00%
   Field_Image_Choice.php86.67%100.00%100.00%
   Field_Likert.php97.22%100.00%100.00%
   Field_List.php92.41%100.00%100.00%
   Field_Multi_Choice.php50.00%100.00%100.00%
   Field_Multiselect.php92.59%100.00%100.00%
   Field_Name.php84.62%100.00%100.00%
   Field_Number.php83.33%100.00%100.00%
   Field_Option.php57.69%50.00%100.00%
   Field_Page.php83.33%100.00%100.00%
   Field_Phone.php81.82%100.00%100.00%
   Field_Poll.php93.75%100.00%100.00%
   Field_Post_Category.php85.00%100.00%100.00%
   Field_Post_Content.php82.35%100.00%100.00%
   Field_Post_Custom_Field.php50.00%100.00%100.00%
   Field_Post_Excerpt.php81.82%100.00%100.00%
   Field_Post_Image.php94.00%100.00%100.00%
   Field_Post_Tags.php90.91%100.00%100.00%
   Field_Post_Title.php81.82%100.00%100.00%
   Field_Product.php88.46%100.00%100.00%
   Field_Products.php85.41%100.00%100.00%
   Field_Quantity.php84.62%100.00%100.00%
   Field_Quiz.php89.74%100.00%100.00%
   Field_Radio.php95.35%100.00%100.00%
   Field_Rank.php95.24%100.00%100.00%
   Field_Rating.php95.24%100.00%100.00%
   Field_Repeater.php97.37%100.00%100.00%
   Field_Section.php90.74%100.00%100.00%
   Field_Select.php94.12%100.00%100.00%
   Field_Shipping.php75.00%66.67%100.00%
   Field_Signature.php67.39%100.00%100.00%
   Field_Slim.php82.35%100.00%100.00%
   Field_Slim_Post.php91.30%100.00%100.00%
   Field_Subtotal.php65.38%75.00%100.00%
   Field_Survey.php95.00%100.00%100.00%
   Field_Tax.php32.00%50.00%100.00%
   Field_Text.php81.82%100.00%100.00%
   Field_Textarea.php90.63%100.00%100.00%
   Field_Time.php81.82%100.00%100.00%
   Field_Tos.php92.59%100.00%100.00%
   Field_Total.php68.00%66.67%100.00%
   Field_V3_List.php92.86%100.00%100.00%
   Field_V3_Products.php73.68%100.00%100.00%
   Field_V3_Section.php77.78%100.00%100.00%
   Field_Website.php85.71%100.00%100.00%
/var/www/html/wp-content/plugins/gravity-pdf/src/Helper/Fonts
   FlushCache.php80.00%100.00%100.00%
   LocalFile.php90.00%100.00%100.00%
   LocalFilesystem.php66.67%100.00%100.00%
   SupportsOtl.php88.89%100.00%100.00%
   TtfFontValidation.php72.73%100.00%100.00%
/var/www/html/wp-content/plugins/gravity-pdf/src/Helper
   Helper_Abstract_Addon.php92.14%100.00%100.00%
   Helper_Abstract_Config_Settings.php75.00%100.00%100.00%
   Helper_Abstract_Controller.php-100.00%100.00%
   Helper_Abstract_Field_Products.php89.47%66.67%100.00%
   Helper_Abstract_Fields.php93.59%93.75%100.00%
   Helper_Abstract_Fields_Input_Type.php84.00%100.00%100.00%
   Helper_Abstract_Form.php--100.00%
   Helper_Abstract_Model.php100.00%100.00%100.00%
   Helper_Abstract_Options.php74.73%75.00%100.00%
   Helper_Abstract_Pdf_Shortcode.php89.52%91.67%100.00%
   Helper_Abstract_View.php95.83%100.00%100.00%
   Helper_Data.php96.57%100.00%100.00%
   Helper_Field_Container.php92.31%100.00%100.00%
   Helper_Field_Container_Gf25.php82.22%100.00%100.00%
   Helper_Field_Container_Void.php16.67%-100.00%
   Helper_Form.php70.97%64.29%100.00%
   Helper_Interface_Actions.php-100.00%100.00%
   Helper_Interface_Config.php50.00%100.00%100.00%
   Helper_Interface_Config_Settings.php50.00%100.00%100.00%
   Helper_Interface_Extension_Settings.php-100.00%100.00%
   Helper_Interface_Extension_Uninstaller.php-100.00%100.00%
   Helper_Interface_Field_Pdf_Config.php50.00%100.00%100.00%
   Helper_Interface_Filters.php-100.00%100.00%
   Helper_Interface_Setup_TearDown.php-100.00%100.00%
   Helper_Interface_Url_Signer.php-100.00%100.00%
   Helper_Logger.php-100.00%100.00%
   Helper_Misc.php73.12%90.63%100.00%
   Helper_Mpdf.php50.00%100.00%100.00%
   Helper_Notices.php79.31%78.57%100.00%
   Helper_Options_Fields.php96.41%94.12%100.00%
   Helper_PDF.php89.66%94.29%100.00%
   Helper_PDF_List_Table.php84.50%92.31%100.00%
   Helper_Pdf_Queue.php84.31%100.00%100.00%
   Helper_QueryPath.php80.00%100.00%100.00%
   Helper_Sha256_Url_Signer.php87.50%100.00%100.00%
   Helper_Singleton.php90.00%100.00%100.00%
   Helper_Templates.php96.43%100.00%100.00%
   Helper_Trait_Logger.php--100.00%
   Helper_Url_Signer.php82.18%100.00%100.00%
/var/www/html/wp-content/plugins/gravity-pdf/src/Helper/Licensing
   EDD_SL_Plugin_Updater.php96.64%100.00%100.00%
/var/www/html/wp-content/plugins/gravity-pdf/src/Helper/Log
   Logger.php70.10%100.00%100.00%
   MonoLoggerPsrLog2And3.php--100.00%
   Redact_Processor.php100.00%100.00%100.00%
/var/www/html/wp-content/plugins/gravity-pdf/src/Helper/Mpdf
   Cache.php66.67%100.00%100.00%
Table truncated to fit comment

🤖 PHPUnit coverage report

@jakejackson1 jakejackson1 force-pushed the fix/e2e-gf-rest-api-enable-timing branch from 1a0273d to ba3d0d8 Compare June 4, 2026 22:16
@jakejackson1 jakejackson1 changed the title Enable GF REST API before Gravity Forms reads the setting on init (fix E2E gf/v2 404) Fix E2E: register gf/v2 routes on the first request and stop the GF setup wizard Jun 4, 2026
@jakejackson1 jakejackson1 force-pushed the fix/e2e-gf-rest-api-enable-timing branch 8 times, most recently from 9cb0a2b to c8ed016 Compare June 5, 2026 00:01
@jakejackson1 jakejackson1 changed the title Fix E2E: register gf/v2 routes on the first request and stop the GF setup wizard Fix E2E: wp-env reset on cache-restore fresh DB so GF REST enables Jun 5, 2026
…es in E2E

When the wp-env work-dir cache is restored against a fresh MySQL volume, a bare
`wp core install` leaves the environment half-configured and the gf/v2 REST API
never enables, failing every Playwright shard with rest_no_route. Run wp-env's
own reset instead, which performs the full install/configure path like a fresh start.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jakejackson1 jakejackson1 force-pushed the fix/e2e-gf-rest-api-enable-timing branch from c8ed016 to 0364c4a Compare June 5, 2026 00:17
@jakejackson1 jakejackson1 merged commit 9788142 into development Jun 5, 2026
16 of 18 checks passed
@jakejackson1 jakejackson1 deleted the fix/e2e-gf-rest-api-enable-timing branch June 5, 2026 01:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant