# Backport
This will backport the following commits from `main` to `8.x`:
- [[Reporting] update puppeteer to version 23.3.1
(#192345)](https://github.com/elastic/kibana/pull/192345)
<!--- Backport version: 9.4.3 -->
### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)
<!--BACKPORT [{"author":{"name":"Eyo O.
Eyo","email":"7893459+eokoneyo@users.noreply.github.com"},"sourceCommit":{"committedDate":"2024-09-18T20:26:44Z","message":"[Reporting]
update puppeteer to version 23.3.1 (#192345)\n\n## Summary\r\n\r\nUpdate
for puppeteer, the following changeset updates puppeteer to\r\nversion
`23.3.1`.\r\n\r\nThe chromium version required for this version of
puppeteer is\r\n`128.0.6613.137` from revision `1331488`, as such the
chromium binary\r\nincluded for windows and darwin platforms either
match or were the\r\nclosest revision to the expectation. The linux
headless binary was built\r\nfrom commit
`fe621c5aa2d6b987e964fb1b5066833da5fb613d` of the
same\r\nrevision.\r\n\r\n_**N.B.**_ Puppeteer 23.0.0 is earmarked as
containing breaking
changes\r\nsee\r\n[here](abda5dcc99/packages/puppeteer-core/CHANGELOG.md (2300-2024-08-07)),\r\nthis
PR considers the outlined changes and makes relevant adjustments
so\r\nreporting continues working as is.\r\n\r\n<!--\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)\r\n\r\n\r\n###
Risk Matrix\r\n\r\nDelete this section if it is not applicable to this
PR.\r\n\r\nBefore closing this PR, invite QA, stakeholders, and other
developers to\r\nidentify risks that should be tested prior to the
change/feature\r\nrelease.\r\n\r\nWhen forming the risk matrix, consider
some of the following examples\r\nand how they may potentially impact
the change:\r\n\r\n| Risk | Probability | Severity | Mitigation/Notes
|\r\n\r\n|---------------------------|-------------|----------|-------------------------|\r\n|
Multiple Spaces—unexpected behavior in non-default Kibana
Space.\r\n| Low | High | Integration tests will verify that all features
are still\r\nsupported in non-default Kibana Space and when user
switches between\r\nspaces. |\r\n| Multiple nodes—Elasticsearch
polling might have race conditions\r\nwhen multiple Kibana nodes are
polling for the same tasks. | High | Low\r\n| Tasks are idempotent, so
executing them multiple times will not result\r\nin logical error, but
will degrade performance. To test for this case we\r\nadd plenty of unit
tests around this logic and document manual testing\r\nprocedure. |\r\n|
Code should gracefully handle cases when feature X or plugin Y
are\r\ndisabled. | Medium | High | Unit tests will verify that any
feature flag\r\nor plugin combination still results in our service
operational. |\r\n| [See more potential
risk\r\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
|\r\n\r\n\r\n### For maintainers\r\n\r\n- [ ] This was checked for
breaking API changes and was
[labeled\r\nappropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\r\n-->\r\n\r\n\r\n###
How to verify linux headless build\r\n- clone the following
repo\r\nhttps://github.com/tsullivan/kibana-dev-docker\r\n- pull this
particular PR\r\n- follow the steps outlined in the repo, replacing any
occurrence of\r\n`kibana-<version>-SNAPSHOT-linux-aarch64.tar.gz` from
the repo above's\r\nstep with the output of running build on this
changeset.\r\n- before running step 4, modify the `kibana.yml` file from
the\r\n`kibana-dev-docker` repo and include the following so we might be
able\r\nto verify the version of chromium running;\r\n ```yaml\r\n
logging.loggers:\r\n - name: plugins.reporting\r\n level: debug\r\n
```\r\n- complete the steps outlined in the README, you'll have a linux
distro\r\nof kibana running on port `5601`\r\n- Attempt creating exports
of PDF and PNG reports, in dashboard, canvas,\r\nand visualizations, on
report creation attempt we would see a log output\r\nthat prints out the
chromium version exactly matching this;\r\n\r\n<img width=\"1326\"
alt=\"Screenshot 2024-09-18 at 14 50
19\"\r\nsrc=\"https://github.com/user-attachments/assets/7206781a-e8f9-469c-ad65-fd13749766b2\">\r\n\r\n---------\r\n\r\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\r\nCo-authored-by:
Elastic Machine
<elasticmachine@users.noreply.github.com>","sha":"91ca8ab95c01f88ea2d79779f3670c88bf269da0","branchLabelMapping":{"^v9.0.0$":"main","^v8.16.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","v9.0.0","Team:SharedUX","backport:prev-major","v8.16.0","backport:version","v8.15.2"],"title":"[Reporting]
update puppeteer to version
23.3.1","number":192345,"url":"https://github.com/elastic/kibana/pull/192345","mergeCommit":{"message":"[Reporting]
update puppeteer to version 23.3.1 (#192345)\n\n## Summary\r\n\r\nUpdate
for puppeteer, the following changeset updates puppeteer to\r\nversion
`23.3.1`.\r\n\r\nThe chromium version required for this version of
puppeteer is\r\n`128.0.6613.137` from revision `1331488`, as such the
chromium binary\r\nincluded for windows and darwin platforms either
match or were the\r\nclosest revision to the expectation. The linux
headless binary was built\r\nfrom commit
`fe621c5aa2d6b987e964fb1b5066833da5fb613d` of the
same\r\nrevision.\r\n\r\n_**N.B.**_ Puppeteer 23.0.0 is earmarked as
containing breaking
changes\r\nsee\r\n[here](abda5dcc99/packages/puppeteer-core/CHANGELOG.md (2300-2024-08-07)),\r\nthis
PR considers the outlined changes and makes relevant adjustments
so\r\nreporting continues working as is.\r\n\r\n<!--\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)\r\n\r\n\r\n###
Risk Matrix\r\n\r\nDelete this section if it is not applicable to this
PR.\r\n\r\nBefore closing this PR, invite QA, stakeholders, and other
developers to\r\nidentify risks that should be tested prior to the
change/feature\r\nrelease.\r\n\r\nWhen forming the risk matrix, consider
some of the following examples\r\nand how they may potentially impact
the change:\r\n\r\n| Risk | Probability | Severity | Mitigation/Notes
|\r\n\r\n|---------------------------|-------------|----------|-------------------------|\r\n|
Multiple Spaces—unexpected behavior in non-default Kibana
Space.\r\n| Low | High | Integration tests will verify that all features
are still\r\nsupported in non-default Kibana Space and when user
switches between\r\nspaces. |\r\n| Multiple nodes—Elasticsearch
polling might have race conditions\r\nwhen multiple Kibana nodes are
polling for the same tasks. | High | Low\r\n| Tasks are idempotent, so
executing them multiple times will not result\r\nin logical error, but
will degrade performance. To test for this case we\r\nadd plenty of unit
tests around this logic and document manual testing\r\nprocedure. |\r\n|
Code should gracefully handle cases when feature X or plugin Y
are\r\ndisabled. | Medium | High | Unit tests will verify that any
feature flag\r\nor plugin combination still results in our service
operational. |\r\n| [See more potential
risk\r\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
|\r\n\r\n\r\n### For maintainers\r\n\r\n- [ ] This was checked for
breaking API changes and was
[labeled\r\nappropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\r\n-->\r\n\r\n\r\n###
How to verify linux headless build\r\n- clone the following
repo\r\nhttps://github.com/tsullivan/kibana-dev-docker\r\n- pull this
particular PR\r\n- follow the steps outlined in the repo, replacing any
occurrence of\r\n`kibana-<version>-SNAPSHOT-linux-aarch64.tar.gz` from
the repo above's\r\nstep with the output of running build on this
changeset.\r\n- before running step 4, modify the `kibana.yml` file from
the\r\n`kibana-dev-docker` repo and include the following so we might be
able\r\nto verify the version of chromium running;\r\n ```yaml\r\n
logging.loggers:\r\n - name: plugins.reporting\r\n level: debug\r\n
```\r\n- complete the steps outlined in the README, you'll have a linux
distro\r\nof kibana running on port `5601`\r\n- Attempt creating exports
of PDF and PNG reports, in dashboard, canvas,\r\nand visualizations, on
report creation attempt we would see a log output\r\nthat prints out the
chromium version exactly matching this;\r\n\r\n<img width=\"1326\"
alt=\"Screenshot 2024-09-18 at 14 50
19\"\r\nsrc=\"https://github.com/user-attachments/assets/7206781a-e8f9-469c-ad65-fd13749766b2\">\r\n\r\n---------\r\n\r\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\r\nCo-authored-by:
Elastic Machine
<elasticmachine@users.noreply.github.com>","sha":"91ca8ab95c01f88ea2d79779f3670c88bf269da0"}},"sourceBranch":"main","suggestedTargetBranches":["8.x","8.15"],"targetPullRequestStates":[{"branch":"main","label":"v9.0.0","branchLabelMappingKey":"^v9.0.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/192345","number":192345,"mergeCommit":{"message":"[Reporting]
update puppeteer to version 23.3.1 (#192345)\n\n## Summary\r\n\r\nUpdate
for puppeteer, the following changeset updates puppeteer to\r\nversion
`23.3.1`.\r\n\r\nThe chromium version required for this version of
puppeteer is\r\n`128.0.6613.137` from revision `1331488`, as such the
chromium binary\r\nincluded for windows and darwin platforms either
match or were the\r\nclosest revision to the expectation. The linux
headless binary was built\r\nfrom commit
`fe621c5aa2d6b987e964fb1b5066833da5fb613d` of the
same\r\nrevision.\r\n\r\n_**N.B.**_ Puppeteer 23.0.0 is earmarked as
containing breaking
changes\r\nsee\r\n[here](abda5dcc99/packages/puppeteer-core/CHANGELOG.md (2300-2024-08-07)),\r\nthis
PR considers the outlined changes and makes relevant adjustments
so\r\nreporting continues working as is.\r\n\r\n<!--\r\n###
Checklist\r\n\r\nDelete any items that are not applicable to this
PR.\r\n\r\n- [ ] Any text added follows [EUI's
writing\r\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\r\nsentence case text and includes
[i18n\r\nsupport](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)\r\n-
[
]\r\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\r\nwas
added for features that require explanation or tutorials\r\n- [ ] [Unit
or
functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere
updated or added to match the most common scenarios\r\n- [ ] [Flaky
Test\r\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\r\nused on any tests changed\r\n- [ ] Any UI touched in this PR is
usable by keyboard only (learn more\r\nabout [keyboard
accessibility](https://webaim.org/techniques/keyboard/))\r\n- [ ] Any UI
touched in this PR does not create any new axe failures\r\n(run axe in
browser:\r\n[FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/),\r\n[Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US))\r\n-
[ ] If a plugin configuration key changed, check if it needs to
be\r\nallowlisted in the cloud and added to the
[docker\r\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\r\n-
[ ] This renders correctly on smaller devices using a
responsive\r\nlayout. (You can test this [in
your\r\nbrowser](https://www.browserstack.com/guide/responsive-testing-on-local-server))\r\n-
[ ] This was checked for
[cross-browser\r\ncompatibility](https://www.elastic.co/support/matrix#matrix_browsers)\r\n\r\n\r\n###
Risk Matrix\r\n\r\nDelete this section if it is not applicable to this
PR.\r\n\r\nBefore closing this PR, invite QA, stakeholders, and other
developers to\r\nidentify risks that should be tested prior to the
change/feature\r\nrelease.\r\n\r\nWhen forming the risk matrix, consider
some of the following examples\r\nand how they may potentially impact
the change:\r\n\r\n| Risk | Probability | Severity | Mitigation/Notes
|\r\n\r\n|---------------------------|-------------|----------|-------------------------|\r\n|
Multiple Spaces—unexpected behavior in non-default Kibana
Space.\r\n| Low | High | Integration tests will verify that all features
are still\r\nsupported in non-default Kibana Space and when user
switches between\r\nspaces. |\r\n| Multiple nodes—Elasticsearch
polling might have race conditions\r\nwhen multiple Kibana nodes are
polling for the same tasks. | High | Low\r\n| Tasks are idempotent, so
executing them multiple times will not result\r\nin logical error, but
will degrade performance. To test for this case we\r\nadd plenty of unit
tests around this logic and document manual testing\r\nprocedure. |\r\n|
Code should gracefully handle cases when feature X or plugin Y
are\r\ndisabled. | Medium | High | Unit tests will verify that any
feature flag\r\nor plugin combination still results in our service
operational. |\r\n| [See more potential
risk\r\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
|\r\n\r\n\r\n### For maintainers\r\n\r\n- [ ] This was checked for
breaking API changes and was
[labeled\r\nappropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\r\n-->\r\n\r\n\r\n###
How to verify linux headless build\r\n- clone the following
repo\r\nhttps://github.com/tsullivan/kibana-dev-docker\r\n- pull this
particular PR\r\n- follow the steps outlined in the repo, replacing any
occurrence of\r\n`kibana-<version>-SNAPSHOT-linux-aarch64.tar.gz` from
the repo above's\r\nstep with the output of running build on this
changeset.\r\n- before running step 4, modify the `kibana.yml` file from
the\r\n`kibana-dev-docker` repo and include the following so we might be
able\r\nto verify the version of chromium running;\r\n ```yaml\r\n
logging.loggers:\r\n - name: plugins.reporting\r\n level: debug\r\n
```\r\n- complete the steps outlined in the README, you'll have a linux
distro\r\nof kibana running on port `5601`\r\n- Attempt creating exports
of PDF and PNG reports, in dashboard, canvas,\r\nand visualizations, on
report creation attempt we would see a log output\r\nthat prints out the
chromium version exactly matching this;\r\n\r\n<img width=\"1326\"
alt=\"Screenshot 2024-09-18 at 14 50
19\"\r\nsrc=\"https://github.com/user-attachments/assets/7206781a-e8f9-469c-ad65-fd13749766b2\">\r\n\r\n---------\r\n\r\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\r\nCo-authored-by:
Elastic Machine
<elasticmachine@users.noreply.github.com>","sha":"91ca8ab95c01f88ea2d79779f3670c88bf269da0"}},{"branch":"8.x","label":"v8.16.0","branchLabelMappingKey":"^v8.16.0$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"8.15","label":"v8.15.2","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->
Co-authored-by: Eyo O. Eyo <7893459+eokoneyo@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
## Summary
Upgrades the dependency for capturing screenshots with Chromium to
[Puppeteer
v20.1.0](https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-v20.1.0)
We're using publicly available Chromium downloads for Windows and Mac.
For Linux, we create a custom build that doesn't have dependencies on
X11 shared libraries.
**Versions:**
* Linux: **113.0.5672.63**
* Windows: **113.0.5672.0**
* Darwin x64: **113.0.5672.0**
* Darwin arm64: **113.0.5672.0**
### Checklist
Delete any items that are not applicable to this PR.
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] Verified in Cloud deployment
### For maintainers
- [x] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
---------
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
* Update Puppeteer to 8.0.0
Updates Chromium to r856583
Links to new build of Linux headless_shell in the Kibana team GCS bucket
Links to main download site of Chromium for Mac and Windows
Removes Mac and Windows compatibility from the Chromium build scripts
* add functional tests for large dashboard
* ensure png comparison is working
* add test for large dashboard pdf
* update arm64 binary checksum
* update README
* more readme update
* Update x-pack/build_chromium/README.md
Co-authored-by: Jean-Louis Leysens <jloleysens@gmail.com>
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Jean-Louis Leysens <jloleysens@gmail.com>
- Updates Linux Chromium builds to accept architecture argument (defaults to x64) for arm64 support.
- Example: `python ~/chromium/build_chromium/build.py 312d84c8ce62810976feda0d3457108a6dfff9e6 arm64`
- Updates all Chromium builds to include architecture in filename.
- `chromium-312d84c-linux_arm64.zip` _(new)_
- `chromium-312d84c-linux.zip` > `chromium-312d84c-linux_x64.zip`
- Moves Chromium install from data directory to `x-pack/plugins/reporting/chromium`
- Moves Chromium download cache from `x-pack/plugins/reporting/.chromium` to `.chromium`
- Installs Chromium during build (closes#53664)
- Updates build to be architecture aware (x64 and aarch64)
- Removed Chromium debug logs, they were not helpful and can not be written inside the Kibana root. If we were to keep them, we would need to write to `logging.dist`.
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
Update Chromium to a recent version compatible with Puppeteer.
Update Chromium build scripts to initialize build environments and work with
recent versions of Chromium.
Modify Chromium reporting logic to be driven mostly by Puppeteer.