Skip to content

Closes #7289: 3.19 Preconnect to external domains - exclusions filter#52

Merged
jeawhanlee merged 3 commits into
feature/3.19-beaconsfrom
feature/7289-3.19-preconnect-to-external-domains-exclusions-filter
May 20, 2025
Merged

Closes #7289: 3.19 Preconnect to external domains - exclusions filter#52
jeawhanlee merged 3 commits into
feature/3.19-beaconsfrom
feature/7289-3.19-preconnect-to-external-domains-exclusions-filter

Conversation

@jeawhanlee
Copy link
Copy Markdown
Contributor

Description

Fixes #(issue number)
Makes beacon compatible array of strings exclusion patterns

Type of change

  • New feature (non-breaking change which adds functionality).
  • Enhancement (non-breaking change which improves an existing functionality).

Detailed scenario

What was tested

Elements having patterns in array exclusions are excluded as expected.

How to test

For default exclusions:
Add a template with elements having the following attribute or having the domain name - https://static.cloudflareinsights.com

  • rel="profile"
  • rel="preconnect"
  • rel="dns-prefetch"
  • rel="icon"

or you can add a new pattern with the filter preconnect_external_domain_exclusions and check that the element containing the patter is excluded as expected.

Technical description

Documentation

First we loop through the exclusions pattern and check if the outerHTML of the element contains each exclusion pattern.

New dependencies

N/A

Risks

N/A

Mandatory Checklist

Code validation

  • I validated all the Acceptance Criteria. If possible, provide screenshots or videos.
  • I triggered all changed lines of code at least once without new errors/warnings/notices.
  • I implemented built-in tests to cover the new/changed code.

Code style

  • I wrote a self-explanatory code about what it does.
  • I protected entry points against unexpected inputs.
  • I did not introduce unnecessary complexity.
  • Output messages (errors, notices, logs) are explicit enough for users to understand the issue and are actionnable.

Unticked items justification

Not applicable to the changes in this PR.

Additional Checks

  • In the case of complex code, I wrote comments to explain it.
  • When possible, I prepared ways to observe the implemented system (logs, data, etc.).
  • I added error handling logic when using functions that could throw errors (HTTP/API request, filesystem, etc.)

@jeawhanlee jeawhanlee self-assigned this May 19, 2025
@codacy-production
Copy link
Copy Markdown

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
Report missing for 83abe181 100.00% (target: 50.00%)
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (83abe18) Report Missing Report Missing Report Missing
Head commit (c7c1667) 1398 1113 79.61%

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#52) 11 11 100.00%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

Footnotes

  1. Codacy didn't receive coverage data for the commit, or there was an error processing the received data. Check your integration for errors and validate that your coverage setup is correct.

@jeawhanlee jeawhanlee requested a review from a team May 19, 2025 17:04
@jeawhanlee jeawhanlee merged commit a2616d3 into feature/3.19-beacons May 20, 2025
4 of 5 checks passed
@jeawhanlee jeawhanlee deleted the feature/7289-3.19-preconnect-to-external-domains-exclusions-filter branch May 20, 2025 06:41
jeawhanlee added a commit to wp-media/wp-rocket that referenced this pull request May 20, 2025
jeawhanlee added a commit that referenced this pull request Jun 2, 2025
* Added preload fonts beacon

* Updated beacon manager and entry point

* Updated test

* Added test

* Remove comment

* Updated docblock

* Updated doc block

* Updated property

* Updated logger method

* Use updated method

* Added more tests

* Added more tests

* Updated entry point

* Added yet more test

* Fixed codacy critical issues

* Fixed codacy critical issues

* Try to fix medium codacy issue

* Added logic to return font urls

* Updated test

* Added preconnect beacon

* Added test

* Added doc block

* Updated test

* Update to use set to remove duplicate entries

* Added test

* Wait for fonts to be loaded

* Updated test

* Updated conditional to check if stylesheet is internal

* Added test

* Make font extensions exclusions dynamic

* Merge pull request #48 from wp-media/enhancement/47-exclusions-part

refactor system fonts to be generic exclusions list

* Closes #7289: 3.19 Preconnect to external domains - exclusions filter (#52)

* Updated exclusions logic to be compatible with array of strings pattern

* Updated tests

* Updated test data

* Store the url origin in the final result instead of hostname (PR #55)

* Fix: Failed to read the 'cssRules' (#51)

* Implement inlineGoogleFonts method to fetch and inline Google Fonts CSS, avoiding CORS issues

* Add tests for inlineGoogleFonts method to validate fetching and inlining of Google Fonts

* Refactor font handling: Implement externalStylesheetsDoc method to fetch and parse external font stylesheets, and update _initializeExternalFontSheets to manage parsed results.

* remove external urls from stylesheets

* fix test

* add Adame's suggestion and it is working

---------

Co-authored-by: WordPressFan <ahmed@wp-media.me>
Co-authored-by: Michael Lee <michaelleemichaellee408@gmail.com>

* Add font family to allFonts object and push new variation only if matching url is valid (#56)

---------

Co-authored-by: Michael Lee <michaelleemichaellee408@gmail.com>
Co-authored-by: Michael Lee <38788055+jeawhanlee@users.noreply.github.com>
Co-authored-by: Gaël Robin <robin.gael@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants