Skip to content

Commit

Permalink
Merge pull request #4317 from alphagov/fix-search-ecomm
Browse files Browse the repository at this point in the history
GA4: Fix ecommerce tracking of searches without query
  • Loading branch information
csutter authored Oct 18, 2024
2 parents 17d4719 + a5e958d commit a4d6d40
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
useful summary for people upgrading their application, not a replication
of the commit log.

## Unreleased

* Fix ecommerce tracking of searches without query ([PR #4317](https://github.com/alphagov/govuk_publishing_components/pull/4317))

## 44.4.1

* Add chartkick path to gemspec ([PR #4312](https://github.com/alphagov/govuk_publishing_components/pull/4312))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {};
var element = data.element
var resultsId = data.resultsId
var isClickEvent = data.event !== undefined
var isSearchResult = element.getAttribute('data-ga4-search-query')
var isSearchResult = element.getAttribute('data-ga4-search-query') !== null

var ecommerceSchema = new window.GOVUK.analyticsGa4.Schemas().ecommerceSchema()
var DEFAULT_LIST_TITLE = 'Smart answer results'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,36 @@ describe('GA4 core', function () {
expect(builtEcommerceObject).toEqual(expectedEcommerceObject)
})

it('tracks variant and term for search results', function () {
resultsParentEl.setAttribute('data-ga4-search-query', 'search term')
resultsParentEl.setAttribute('data-ga4-ecommerce-variant', 'upside-down')

expectedEcommerceObject.search_results.term = 'search term'
expectedEcommerceObject.search_results.sort = 'upside-down'

var builtEcommerceObject = GOVUK.analyticsGa4.core.ecommerceHelperFunctions.populateEcommerceSchema({
element: resultsParentEl,
resultsId: 'result-count'
})

expect(builtEcommerceObject).toEqual(expectedEcommerceObject)
})

it('tracks variant and term for search results even when query is blank', function () {
resultsParentEl.setAttribute('data-ga4-search-query', '')
resultsParentEl.setAttribute('data-ga4-ecommerce-variant', 'upside-down')

expectedEcommerceObject.search_results.term = undefined
expectedEcommerceObject.search_results.sort = 'upside-down'

var builtEcommerceObject = GOVUK.analyticsGa4.core.ecommerceHelperFunctions.populateEcommerceSchema({
element: resultsParentEl,
resultsId: 'result-count'
})

expect(builtEcommerceObject).toEqual(expectedEcommerceObject)
})

it('the ecommerce items array is limited to a maximum of 15,000 UTF-16 code units', function () {
var innerHTML = ''
var ecommerceItems = []
Expand Down

0 comments on commit a4d6d40

Please sign in to comment.