diff --git a/cypress/e2e/origin-search.cy.js b/cypress/e2e/origin-search.cy.js --- a/cypress/e2e/origin-search.cy.js +++ b/cypress/e2e/origin-search.cy.js @@ -311,10 +311,10 @@ } }); - it('should encode origin argument in latest visit URL queried by XHR', function() { + it('should encode ? in origin URL provided as argument in latest visit URL queried by XHR', function() { // origin added in tests data by Python const originUrl = 'https://example.org/project/download.php?version=2.0'; - cy.intercept(`**/api/1/origin/${encodeURIComponent(originUrl)}/visit/latest/**`) + cy.intercept(`**/api/1/origin/${originUrl.replace('?', '%3F')}/visit/latest/**`) .as('checkOriginVisit'); doSearch(originUrl); diff --git a/swh/web/browse/assets/browse/origin-search.js b/swh/web/browse/assets/browse/origin-search.js --- a/swh/web/browse/assets/browse/origin-search.js +++ b/swh/web/browse/assets/browse/origin-search.js @@ -53,7 +53,7 @@ tableRow += ''; table.append(tableRow); // get async latest visit snapshot and update visit status icon - let latestSnapshotUrl = Urls.api_1_origin_visit_latest(encodeURIComponent(origin.url)); + let latestSnapshotUrl = Urls.api_1_origin_visit_latest(origin.url.replace('?', '%3F')); latestSnapshotUrl += '?require_snapshot=true'; promises.push(fetch(latestSnapshotUrl)); }