Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle popup right after first popup detected (#326) #327

Merged
merged 15 commits into from
Jan 25, 2024

Conversation

seia-soto
Copy link
Contributor

@seia-soto seia-soto commented Dec 28, 2023

This PR adds immediate processing of first appeared popup to fix #326 . Instead of waiting all promises, I added a callback to handle first appearing popup.

// Function signature
detectPopups(cmps: AutoCMP[], onFirstPopupAppears: (cmp: AutoCMP) => unknown = () => {}): Promise<AutoCMP[]>

By using callback, the popup code won't be disturbed by other CMP detection codes. Also, I could maintain the code consistency.

Code summarization:

async _start() {
	// Detect CMPs

	let result: Promise<boolean>
	
	// Adds first popup callback (which is handled by detectPopups
	let foundPopups = await this.detectPopups(staticCmps, cmp => { result = this.handlePopup(cmp) })
    if (foundPopups.length === 0) {
      foundPopups = await this.detectPopups(cosmeticCmps, cmp => { result = this.handlePopup(cmp) })
    }

	if (foundPopups.length === 0) {
      // No popup found
    }

    if (foundPopups.length > 1) {
      // Multiple popup found
    }

    return result
}

This PR also includes the following changes:

  • Change Array.prototype.map iteration to single loop to filter out CMPs including cosmetic rules (performance reasons)
  • Adds test-results/ and .DS_Store to .gitignore

Some suggestions:

  • Add stricter eslint config for code style consistency
  • Add contributing.md file for future contributors

refs #326
refs #319

@seia-soto
Copy link
Contributor Author

I'd like to accept every code style fixes. Please, feel free to leave a comment.

Copy link
Member

@muodov muodov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @seia-soto, I really appreciate your help! This looks great to me, but I'd like @sammacbeth to have a second look since this is a core change.
Note that this is a holiday season, so a turnaround may be a bit slow 🙏

lib/web.ts Outdated Show resolved Hide resolved
@muodov muodov requested a review from sammacbeth December 29, 2023 10:13
@muodov muodov added minor Increment the minor version when merged release Create a release when this pr is merged labels Dec 29, 2023
lib/web.ts Outdated
Comment on lines 242 to 256
this.detectPopup(cmps[i])
.then(cmp => {
foundCmps.push(cmp)

if (foundCmps.length === 1) {
onFirstPopupAppears(cmp)
}
})
.catch(error => {
enableLogs && console.warn(`error waiting for a popup for ${cmps[i].name}`, error)
})
.finally(() => {
if (++completed === l) {
resolve(foundCmps)
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this be rewritten with async/await? I find that easier to follow, and matches the code-style in the rest of the project.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I converted the function using Promise.race and Promise.allSettled. Generally agreeing to code-style problem.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • changing as later review stated that Promise.any should be used.

Co-authored-by: Sam Macbeth <smacbeth@duckduckgo.com>
@seia-soto seia-soto requested a review from sammacbeth January 4, 2024 02:47
lib/web.ts Outdated Show resolved Hide resolved
Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>
@sammacbeth
Copy link
Collaborator

I'm holding off on merging here, as I noticed an increase in test failures when running the Playwright tests from #323 on this branch. I need to investigate if this might have caused a regression.

We may return unassigned `result` variable before the callback function of `onFirstPopupAppears` because Promise of `detectPopups` can be resolved before the Promise of `handlePopup`.
@seia-soto
Copy link
Contributor Author

seia-soto commented Jan 9, 2024

@sammacbeth @muodov Sorry for making confusion. I found that autoconsent may return unassigned result variable before the callback function of onFirstPopupAppears because Promise of detectPopups can be resolved before the Promise of handlePopup. I pushed a fix to this just now. Can you check again?

  • edit 1: However, I don't think this will happen in common case considering computation times after result assignment.

@sammacbeth
Copy link
Collaborator

@seia-soto Can you rebase with main? Then I'll run a new round of tests to check if this fix is working correctly.

seia-soto and others added 7 commits January 10, 2024 22:38
Co-authored-by: Sam Macbeth <smacbeth@duckduckgo.com>
Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>
We may return unassigned `result` variable before the callback function of `onFirstPopupAppears` because Promise of `detectPopups` can be resolved before the Promise of `handlePopup`.
@seia-soto
Copy link
Contributor Author

@sammacbeth done!

@sammacbeth
Copy link
Collaborator

Thanks, it looks like there was an issue with the rebase because your diff is now much too large. I created a clean branch and cherry-picked your commits to test: https://github.com/duckduckgo/autoconsent/tree/sam/327-rebase

My testing found that this change is failing in quite a few cases with this error:
Screenshot 2024-01-11 at 11 54 16

For example, try the following sites:

@sammacbeth sammacbeth self-requested a review January 11, 2024 10:57
@seia-soto
Copy link
Contributor Author

@sammacbeth Hi sam, it seems like we can simply put error handler there. Can you rerun your test on the following branch?

https://github.com/seia-soto/autoconsent/tree/sam/327-rebase

@sammacbeth
Copy link
Collaborator

Thanks @seia-soto. This looks to work better. Can you open a new PR based on that branch (or fix the merge and conflicts on this PR), then I'll give this another pass.

@seia-soto
Copy link
Contributor Author

seia-soto commented Jan 18, 2024

@muodov Please, take a look into the result of merge so your recent feature push can work properly :)

Maybe it's better to see total diff: https://github.com/duckduckgo/autoconsent/pull/327/files

@muodov
Copy link
Member

muodov commented Jan 19, 2024

@seia-soto the merge update looks good to me

@seia-soto
Copy link
Contributor Author

@sammacbeth I'm now ready to merge!

@sammacbeth sammacbeth merged commit f078b6b into duckduckgo:main Jan 25, 2024
3 checks passed
@muodov
Copy link
Member

muodov commented Jan 31, 2024

FYI #365

private-face pushed a commit to tempest-tech-ltd/autoconsent that referenced this pull request Apr 11, 2024
* Add a deferred check for usercentrics (duckduckgo#322)

* Update CHANGELOG.md [skip ci]

* Bump version to: 6.6.1 [skip ci]

* Add a rule for csu-landtag.de (duckduckgo#324)

* Add a rule for roofingmegastore.co.uk (duckduckgo#325)

refs ghostery/broken-page-reports#344

* Add a rule for ciaopeople.it (duckduckgo#320)

* Add a rule for ohga.it

refs ghostery/broken-page-reports#318

* Rename ohga.it to ciaopeople.it and add relations

- ohga.it
- lexplain.it
- wamily.it
- fanpage.it

* Add test for ciaopeople-it and remove obsoletes

* Update tests/ciaopeople-it.spec.ts

---------

Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>

* Update CHANGELOG.md [skip ci]

* Bump version to: 6.7.0 [skip ci]

* Fix CSP errors when running eval rules in MV3 extension (duckduckgo#318)

* Pass eval snippet function directly to avoid CSP errors

* Make microsoft rule pass on github

* Update CHANGELOG.md [skip ci]

* Bump version to: 7.0.0 [skip ci]

* Improve Tealium support (duckduckgo#315)

* Publish coverage data (duckduckgo#330)

Co-authored-by: Dax the Deployer <dax@duckduckgo.com>

* iWink rule (duckduckgo#123)

* iWink rule

* Make iWink rule more specific

---------

Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>

* Update CHANGELOG.md [skip ci]

* Bump version to: 7.1.0 [skip ci]

* Bump the dev-dependencies group with 4 updates (duckduckgo#328)

Bumps the dev-dependencies group with 4 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser), [chai](https://github.com/chaijs/chai) and [esbuild](https://github.com/evanw/esbuild).


Updates `@typescript-eslint/eslint-plugin` from 6.15.0 to 6.17.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.17.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.15.0 to 6.17.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.17.0/packages/parser)

Updates `chai` from 4.3.10 to 5.0.0
- [Release notes](https://github.com/chaijs/chai/releases)
- [Changelog](https://github.com/chaijs/chai/blob/main/History.md)
- [Commits](chaijs/chai@v4.3.10...v5.0.0)

Updates `esbuild` from 0.19.9 to 0.19.11
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](evanw/esbuild@v0.19.9...v0.19.11)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: chai
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: dev-dependencies
- dependency-name: esbuild
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Single selector in hide rules (duckduckgo#334)

* Improve Tealium rule

* Change compile target for the test bundle to support optional chaining in evals

* Add test cases for tealium

* Make the hide rule accept a single selector (duckduckgo#316)

* Make the `hide` rule accept a single selector instead of a list

* Change the Hide rule in json files

* Update element selector docs

* Add a note about hide rule only supporting CSS selectors

* Update CHANGELOG.md [skip ci]

* Bump version to: 8.0.0 [skip ci]

* Add a rule for hema.com (duckduckgo#319)

* Add a rule for hema.com

`hema.com` includes Cookiebot CMP script inside their website but it's unused in actual.

* Remove unnecessary wait in the cookiebot rule

* Tweak the hema rule

* Add runContext for hema-com

Co-authored-by: Sam Macbeth <smacbeth@duckduckgo.com>

* Adjust rule trigger for hema

Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>

---------

Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>
Co-authored-by: Sam Macbeth <smacbeth@duckduckgo.com>

* Test a subset of sites found in the coverage crawl in CI (duckduckgo#323)

* Add a test to test a subset of sites from the coverage data

* Run subset test on Jenkins

* Use webkit for CI

* Make number of sites configurable

* Allow other branches to be checked out.

* Run tests together in a single step

* Add browser to description

* Increase the test timeout

* Update test result paths

* Don't upload screenshots

* Improve env block

* Revert test root

* Only use sites where the popup is open by default as examples (duckduckgo#336)

* Add a rule for ing.de (duckduckgo#337)

Testing this site results in IP address ban.

* Update CHANGELOG.md [skip ci]

* Bump version to: 8.1.0 [skip ci]

* Klaro: fix toggle selectors (duckduckgo#339)

* Klaro: use "disable all" button when available.

* Exclude 'required-only'

* Support multiline eval snippets and update klaro to test all possible APIs

* Improve Klaro self test snippet

* Tidy spacing

* Handle some more design variants

* Update CHANGELOG.md [skip ci]

* Bump version to: 8.2.0 [skip ci]

* Bump the dev-dependencies group with 3 updates (duckduckgo#335)

Bumps the dev-dependencies group with 3 updates: [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome), [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser).


Updates `@types/chrome` from 0.0.254 to 0.0.256
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome)

Updates `@typescript-eslint/eslint-plugin` from 6.17.0 to 6.18.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.18.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.17.0 to 6.18.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.18.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@types/chrome"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Configurable logs (duckduckgo#332)

* Make logs togglable via config

* Wrap rule executors in a class instance

* Refactor unit tests

* Make logs toggleable from the extension popup

* Rename rule-executors to dom-actions

* Make logs more granular

* Normalize config before initialization

* Fix dom actions tests

* post-merge mixes

* Remove commented lines

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.0.0 [skip ci]

* Add a rule for lightbox CMP (duckduckgo#329)

* Add a rule for voba-rhein-erft-koeln.de

refs ghostery/broken-page-reports#420

* Rename to lightbox and add relevant websites

* feat: add a detailed rule for lightbox

Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>

---------

Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.1.0 [skip ci]

* Handle popup right after first popup detected (duckduckgo#326) (duckduckgo#327)

* Handle popup right after first popup detected (duckduckgo#326)

refs duckduckgo#326
refs duckduckgo#319

* Remove useless additional function call

* Remove useless default for function argument

* Convert Promise based `detectPopups` to async/await

Co-authored-by: Sam Macbeth <smacbeth@duckduckgo.com>

* fix: only accept fullfilled promises

Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>

* fix: await on first popup appears callback

We may return unassigned `result` variable before the callback function of `onFirstPopupAppears` because Promise of `detectPopups` can be resolved before the Promise of `handlePopup`.

* Handle popup right after first popup detected (duckduckgo#326)

refs duckduckgo#326
refs duckduckgo#319

* Remove useless additional function call

* Remove useless default for function argument

* Convert Promise based `detectPopups` to async/await

Co-authored-by: Sam Macbeth <smacbeth@duckduckgo.com>

* fix: only accept fullfilled promises

Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>

* fix: await on first popup appears callback

We may return unassigned `result` variable before the callback function of `onFirstPopupAppears` because Promise of `detectPopups` can be resolved before the Promise of `handlePopup`.

* fix: unhandled exception

---------

Co-authored-by: Sam Macbeth <smacbeth@duckduckgo.com>
Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.2.0 [skip ci]

* Handle absence of structuredClone() (duckduckgo#356)

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.2.1 [skip ci]

* Update the EZoic rule (duckduckgo#344)

* Fix the Canonical rule (duckduckgo#345)

* Add rules from Jan 10 Ghostery fixes (duckduckgo#341)

* Add a rule for canyon.com

refs ghostery/broken-page-reports#277

* Add a rule for transip.nl

This website requires us to be redirect to opt-out. Successful test wasn't generated.

* Add a rule for rog-forum.asus.com

* Add a rule for hetzner.com

* Add a rule for strato.de

* Remove cosmetic flags

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.3.0 [skip ci]

* Add rule for bahn.de (duckduckgo#348)

* Complianz regression fixes (duckduckgo#347)

* Update the rule Complianz-optin

* Fix Complianz-categories

* Fix more Complianz sites

* Increase timeout in the sourcepoint rule (duckduckgo#349)

* Make a rejecting osano rule (duckduckgo#350)

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.4.0 [skip ci]

* Improve cookie-law-info rule (duckduckgo#352)

* Add extra hiding to workaround pop-ups that are shown on mouse mve after opt-out (duckduckgo#353)

* Support another version of uniconsent (duckduckgo#355)

* More site-specific rules (duckduckgo#358)

* Add rule for instagram

* Add rules for europa.eu

* Add rule for xvideos

* Add rule for temu

* Add rule for ecosia

* Add rule for verizon

* Add rule for fides CMP (duckduckgo#359)

* Bump the dev-dependencies group with 7 updates (duckduckgo#360)

Bumps the dev-dependencies group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [@playwright/test](https://github.com/microsoft/playwright) | `1.40.1` | `1.41.1` |
| [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome) | `0.0.256` | `0.0.259` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `6.18.0` | `6.20.0` |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `6.18.0` | `6.20.0` |
| [chai](https://github.com/chaijs/chai) | `5.0.0` | `5.0.3` |
| [esbuild](https://github.com/evanw/esbuild) | `0.19.11` | `0.20.0` |
| [web-ext](https://github.com/mozilla/web-ext) | `7.9.0` | `7.11.0` |


Updates `@playwright/test` from 1.40.1 to 1.41.1
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.40.1...v1.41.1)

Updates `@types/chrome` from 0.0.256 to 0.0.259
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome)

Updates `@typescript-eslint/eslint-plugin` from 6.18.0 to 6.20.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.20.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.18.0 to 6.20.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.20.0/packages/parser)

Updates `chai` from 5.0.0 to 5.0.3
- [Release notes](https://github.com/chaijs/chai/releases)
- [Changelog](https://github.com/chaijs/chai/blob/main/History.md)
- [Commits](chaijs/chai@v5.0.0...v5.0.3)

Updates `esbuild` from 0.19.11 to 0.20.0
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](evanw/esbuild@v0.19.11...v0.20.0)

Updates `web-ext` from 7.9.0 to 7.11.0
- [Release notes](https://github.com/mozilla/web-ext/releases)
- [Commits](mozilla/web-ext@7.9.0...7.11.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@types/chrome"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: chai
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: esbuild
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: web-ext
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: paypal-us (duckduckgo#361)

* Fix Ketch and eu-cookie-compliance (duckduckgo#351)

* Improve the Ketch rule

* Better handle `if` without `else`

* Improve eu-cookie-compliance rule

* Address PR comments

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.5.0 [skip ci]

* Fix reddit rule (duckduckgo#362)

* Handle Tealium implicit modal (duckduckgo#363)

* Add rule for webflow (duckduckgo#364)

* regression fix: Do not run opt-out unless a pop-up is actually shown (duckduckgo#365)

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.6.0 [skip ci]

* More site-specific pop-ups (duckduckgo#366)

* Add rule for asus.com

* Add rule for xe.com

* Add rule for ourworldindata

* Add rule for svt.se

* Rule for productz.com

* Add rule for dndbeyond

* tweak the default rule template

* Cosmetic rule for wolframalpha

* Rule for arbeitsagentur

* Add rule for jdsports

* Add rule for hashicorp

* Rule for setapp.com

* Add rule for livejasmin

* Add a rule for mobile twitch notice

* Add rule for aliexpress

* Work around randomized classnames in livejasmin and svt

* More rules for common CMPs (duckduckgo#367)

* Add rule for openli

* Add rule for cookieconsent v2.x.x

* Add rule for cookieconsent v3

* Add rule for cookieacceptbar

* Add rules for termsfeed

* Rule for hu-manity

* Rule for OM Cookie manager

* Rule for pabcogypsum.com

* Rule for abconcerts.be

* Add a rule for Taunton sites

* Add a rule for lineagrafica

* tweak taunton rule

* Address PR comments

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.7.0 [skip ci]

* Avoid :has selectors in detect rules (duckduckgo#370)

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.7.1 [skip ci]

* tweak some site-specific rules to support mobile versions (duckduckgo#371)

* Update CHANGELOG.md [skip ci]

* Bump version to: 9.7.2 [skip ci]

* Publish coverage data (duckduckgo#372)

Co-authored-by: Dax the Deployer <dax@duckduckgo.com>

* Bump the dev-dependencies group with 5 updates (duckduckgo#374)

Bumps the dev-dependencies group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@playwright/test](https://github.com/microsoft/playwright) | `1.41.1` | `1.41.2` |
| [@puppeteer/replay](https://github.com/puppeteer/replay) | `2.13.4` | `3.0.0` |
| [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome) | `0.0.259` | `0.0.260` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `6.20.0` | `6.21.0` |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `6.20.0` | `6.21.0` |


Updates `@playwright/test` from 1.41.1 to 1.41.2
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.41.1...v1.41.2)

Updates `@puppeteer/replay` from 2.13.4 to 3.0.0
- [Release notes](https://github.com/puppeteer/replay/releases)
- [Changelog](https://github.com/puppeteer/replay/blob/main/CHANGELOG.md)
- [Commits](puppeteer/replay@v2.13.4...v3.0.0)

Updates `@types/chrome` from 0.0.259 to 0.0.260
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome)

Updates `@typescript-eslint/eslint-plugin` from 6.20.0 to 6.21.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.21.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.20.0 to 6.21.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v6.21.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@puppeteer/replay"
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: dev-dependencies
- dependency-name: "@types/chrome"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Setup github status reporting for Jenkins multibranch job (duckduckgo#373)

* Setup github status reporting for Jenkins multibranch job

* Disable junit checks publishing

* Ensure correct branch is checked out on multi-branch runs

* Suppress logging in CI

* Fix some issues with stale commits

* Mark run as failed if there are too many failures

* Update action-asana-sync (duckduckgo#378)

* Update asana.yml

* Bump the dev-dependencies group with 4 updates (duckduckgo#377)

Bumps the dev-dependencies group with 4 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin), [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser), [chai](https://github.com/chaijs/chai) and [mocha](https://github.com/mochajs/mocha).


Updates `@typescript-eslint/eslint-plugin` from 6.21.0 to 7.0.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.0.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 6.21.0 to 7.0.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.0.1/packages/parser)

Updates `chai` from 5.0.3 to 5.1.0
- [Release notes](https://github.com/chaijs/chai/releases)
- [Changelog](https://github.com/chaijs/chai/blob/main/History.md)
- [Commits](chaijs/chai@v5.0.3...v5.1.0)

Updates `mocha` from 10.2.0 to 10.3.0
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](mochajs/mocha@v10.2.0...v10.3.0)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: dev-dependencies
- dependency-name: chai
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump the dev-dependencies group with 7 updates (duckduckgo#382)

Bumps the dev-dependencies group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) | `4.3.11` | `4.3.12` |
| [@types/chrome](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chrome) | `0.0.260` | `0.0.261` |
| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `7.0.1` | `7.1.0` |
| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `7.0.1` | `7.1.0` |
| [auto](https://github.com/intuit/auto) | `11.0.4` | `11.1.1` |
| [esbuild](https://github.com/evanw/esbuild) | `0.20.0` | `0.20.1` |
| [eslint](https://github.com/eslint/eslint) | `8.56.0` | `8.57.0` |


Updates `@types/chai` from 4.3.11 to 4.3.12
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai)

Updates `@types/chrome` from 0.0.260 to 0.0.261
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chrome)

Updates `@typescript-eslint/eslint-plugin` from 7.0.1 to 7.1.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.1.0/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 7.0.1 to 7.1.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.1.0/packages/parser)

Updates `auto` from 11.0.4 to 11.1.1
- [Release notes](https://github.com/intuit/auto/releases)
- [Changelog](https://github.com/intuit/auto/blob/main/CHANGELOG.md)
- [Commits](intuit/auto@v11.0.4...v11.1.1)

Updates `esbuild` from 0.20.0 to 0.20.1
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](evanw/esbuild@v0.20.0...v0.20.1)

Updates `eslint` from 8.56.0 to 8.57.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](eslint/eslint@v8.56.0...v8.57.0)

---
updated-dependencies:
- dependency-name: "@types/chai"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@types/chrome"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: auto
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: esbuild
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Support reject button in clinch (duckduckgo#375)

* Update CHANGELOG.md [skip ci]

* Bump version to: 10.0.0 [skip ci]

* Publish coverage data (duckduckgo#383)

Co-authored-by: Dax the Deployer <dax@duckduckgo.com>

* sync package-lock.json

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: HoJeong Go <seia@outlook.kr>
Co-authored-by: Sam Macbeth <runner@fv-az1113-302.v4dlmfbwbvlezlyjnbnry1jt3f.cx.internal.cloudapp.net>
Co-authored-by: Maxim Tsoy <maks.tsoy@gmail.com>
Co-authored-by: Sam Macbeth <runner@fv-az979-838.lnrek1131jeubcfwnjesvv4kld.dx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az1022-218.qszcca3gaylehey5nrg125joga.dx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <sammacbeth@users.noreply.github.com>
Co-authored-by: Dax the Deployer <dax@duckduckgo.com>
Co-authored-by: Tomassie91 <github@tomasklinkenberg.nl>
Co-authored-by: Sam Macbeth <runner@fv-az1435-110.w10t344lelvuxfmjd4pvrrtsxg.cx.internal.cloudapp.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sam Macbeth <runner@fv-az735-909.3fam5btdjptetor2mdbeum0p5b.dx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <smacbeth@duckduckgo.com>
Co-authored-by: Sam Macbeth <runner@fv-az532-920.yhfsaq54z0vebhuvdla3z0z0vh.cx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az885-671.m43iyx0u3v4e1h2pvvlabjukza.cx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az881-524.kxqfgnpkrxgetcyd3drl2yrtfd.ex.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az1538-407.upsp13a5k4ou3ds4kr34xzh2lh.cx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az1055-919.mrg2vkl14epehdn0xjtgmxanmg.phxx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az802-90.15taxv3x2l5urdl5ou4x200swd.phxx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az569-219.howdd30p31kevpcfp33h0nwd0f.bx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az735-561.3fam5btdjptetor2mdbeum0p5b.dx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az777-164.lfui0zr1uqperkldaumeavowed.bx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az1242-670.5v455grvumqehdtexsenyv1bfb.ex.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az1487-932.vpy2y30pan5uhaa0ktko4c43jh.ex.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az564-163.umv0eqcl5qku3cwf2dcfspuvdc.ex.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az1198-835.olij14r4f4eezasrnq2weippdh.phxx.internal.cloudapp.net>
Co-authored-by: Sam Macbeth <runner@fv-az1532-911.r45ftdqj0iiudj1ovfs3chqk3e.ex.internal.cloudapp.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
minor Increment the minor version when merged release Create a release when this pr is merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Proceed immediately when the first pop-up is detected
3 participants