From 9f2d0c5172969dad594b8445d850b5fae141b990 Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn Date: Thu, 20 Jan 2022 21:29:45 -0800 Subject: [PATCH 1/5] Update config script defaults --- frontend/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 44ca13e90..3debb384a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -42,9 +42,9 @@ "lint": "ng lint", "e2e": "npm run generate-config && ng e2e", "e2e:ci": "npm run cypress:run:ci", - "config:defaults:mempool": "node update-config.js TESTNET_ENABLED=true SIGNET_ENABLED=true LIQUID_ENABLED=true BISQ_ENABLED=true ITEMS_PER_PAGE=25 BASE_MODULE=mempool && npm run generate-config", - "config:defaults:liquid": "node update-config.js TESTNET_ENABLED=true SIGNET_ENABLED=true LIQUID_ENABLED=true BISQ_ENABLED=true ITEMS_PER_PAGE=25 BASE_MODULE=liquid && npm run generate-config", - "config:defaults:bisq": "node update-config.js TESTNET_ENABLED=true SIGNET_ENABLED=true LIQUID_ENABLED=true BISQ_ENABLED=true ITEMS_PER_PAGE=25 BASE_MODULE=bisq && npm run generate-config", + "config:defaults:mempool": "node update-config.js TESTNET_ENABLED=true SIGNET_ENABLED=true LIQUID_ENABLED=true LIQUID_TESTNET_ENABLED=true BISQ_ENABLED=true ITEMS_PER_PAGE=25 BASE_MODULE=mempool BLOCK_WEIGHT_UNITS=4000000 && npm run generate-config", + "config:defaults:liquid": "node update-config.js TESTNET_ENABLED=true SIGNET_ENABLED=true LIQUID_ENABLED=true LIQUID_TESTNET_ENABLED=true BISQ_ENABLED=true ITEMS_PER_PAGE=25 BASE_MODULE=liquid BLOCK_WEIGHT_UNITS=300000 && npm run generate-config", + "config:defaults:bisq": "node update-config.js TESTNET_ENABLED=true SIGNET_ENABLED=true LIQUID_ENABLED=true BISQ_ENABLED=true ITEMS_PER_PAGE=25 BASE_MODULE=bisq BLOCK_WEIGHT_UNITS=4000000 && npm run generate-config", "dev:ssr": "npm run generate-config && ng run mempool:serve-ssr", "serve:ssr": "node server.run.js", "build:ssr": "npm run build && ng run mempool:server:production && ./node_modules/typescript/bin/tsc server.run.ts", From cf5cce23f341bf0aaf2a4cd7d77ca6e93242014b Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn Date: Thu, 20 Jan 2022 21:30:03 -0800 Subject: [PATCH 2/5] Add Liquid Testnet tests --- .../liquidtestnet/liquidtestnet.spec.ts | 179 ++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 frontend/cypress/integration/liquidtestnet/liquidtestnet.spec.ts diff --git a/frontend/cypress/integration/liquidtestnet/liquidtestnet.spec.ts b/frontend/cypress/integration/liquidtestnet/liquidtestnet.spec.ts new file mode 100644 index 000000000..bef477d4b --- /dev/null +++ b/frontend/cypress/integration/liquidtestnet/liquidtestnet.spec.ts @@ -0,0 +1,179 @@ +describe('Liquid Testnet', () => { + const baseModule = Cypress.env("BASE_MODULE"); + const basePath = '/testnet'; + + beforeEach(() => { + cy.intercept('/liquidtestnet/api/block/**').as('block'); + cy.intercept('/liquidtestnet/api/blocks/').as('blocks'); + cy.intercept('/liquidtestnet/api/tx/**/outspends').as('outspends'); + cy.intercept('/liquidtestnet/api/block/**/txs/**').as('block-txs'); + cy.intercept('/resources/pools.json').as('pools'); + + Cypress.Commands.add('waitForBlockData', () => { + cy.wait('@socket'); + cy.wait('@block'); + cy.wait('@outspends'); + }); + }); + + if (baseModule === 'liquid') { + + it('check first mempool block after skeleton loads', () => { + cy.visit(`${basePath}`); + cy.waitForSkeletonGone(); + cy.get('#mempool-block-0 > .blockLink').should('exist'); + }); + + it('loads the dashboard', () => { + cy.visit(`${basePath}`); + cy.waitForSkeletonGone(); + }); + + it('loads the blocks page', () => { + cy.visit(`${basePath}/blocks`); + cy.waitForSkeletonGone(); + }); + + it('loads a specific block page', () => { + cy.visit(`${basePath}/block/7e1369a23a5ab861e7bdede2aadcccae4ea873ffd9caf11c7c5541eb5bcdff54`); + cy.waitForSkeletonGone(); + }); + + it('loads the graphs page', () => { + cy.visit(`${basePath}/graphs`); + cy.waitForSkeletonGone(); + }); + + it('loads the tv page - desktop', () => { + cy.visit(`${basePath}`); + cy.waitForSkeletonGone(); + cy.get('li:nth-of-type(3) > a').click().then(() => { + cy.wait(1000); + }); + }); + + it('loads the graphs page - mobile', () => { + cy.visit(`${basePath}`) + cy.waitForSkeletonGone(); + cy.get('li:nth-of-type(3) > a').click().then(() => { + cy.viewport('iphone-6'); + cy.wait(1000); + cy.get('.tv-only').should('not.exist'); + }); + }); + + it.skip('renders unconfidential addresses correctly on mobile', () => { + cy.viewport('iphone-6'); + cy.visit(`${basePath}/address/__TODO__`); + cy.waitForSkeletonGone(); + //TODO: Add proper IDs for these selectors + const firstRowSelector = '.container-xl > :nth-child(3) > div > :nth-child(1) > .table > tbody'; + const thirdRowSelector = '.container-xl > :nth-child(3) > div > :nth-child(3)'; + cy.get(firstRowSelector).invoke('css', 'width').then(firstRowWidth => { + cy.get(thirdRowSelector).invoke('css', 'width').then(thirdRowWidth => { + expect(parseInt(firstRowWidth)).to.be.lessThan(parseInt(thirdRowWidth)); + }); + }); + }); + + describe('assets', () => { + it('shows the assets screen', () => { + cy.visit(`${basePath}/assets`); + cy.waitForSkeletonGone(); + cy.get('table tr').should('have.length.at.least', 5); + }); + + it('allows searching assets', () => { + cy.visit(`${basePath}/assets`); + cy.waitForSkeletonGone(); + cy.get('.container-xl input').click().type('Liquid Bitcoin').then(() => { + cy.get('table tr').should('have.length', 1); + }); + }); + + it('shows a specific asset ID', () => { + cy.visit(`${basePath}/assets`); + cy.waitForSkeletonGone(); + cy.get('.container-xl input').click().type('Liquid CAD').then(() => { + cy.get('table tr td:nth-of-type(1) a').click(); + }); + }); + }); + + describe('unblinded TX', () => { + it('should not show an unblinding error message for regular txs', () => { + cy.visit(`${basePath}/tx/82a479043ec3841e0d3f829afc8df4f0e2bbd675a13f013ea611b2fde0027d45`); + cy.waitForSkeletonGone(); + cy.get('.error-unblinded' ).should('not.exist'); + }); + + it('show unblinded TX', () => { + cy.visit(`${basePath}/tx/c3d908ab77891e4c569b0df71aae90f4720b157019ebb20db176f4f9c4d626b8#blinded=100000,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,df290ead654d7d110ebc5aaf0bcf11d5b5d360431a467f1cde0a856fde986893,33cb3a2fd2e76643843691cf44a78c5cd28ec652a414da752160ad63fbd37bc9,49741,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,edb0713bcbfcb3daabf601cb50978439667d208e15fed8a5ebbfea5696cda1d5,4de70115501e8c7d6bd763e229bf42781edeacf6e75e1d7bdfa4c63104bc508a`); + cy.waitForSkeletonGone(); + cy.get('#table-tx-vin tr:nth-child(1) .amount').should('contain.text', '0.00100000 tL-BTC'); + cy.get('#table-tx-vin tr').should('have.class', 'assetBox'); + cy.get('#table-tx-vout tr:nth-child(1) .amount').should('contain.text', '0.00050000 tL-BTC'); + cy.get('#table-tx-vout tr:nth-child(2) .amount').should('contain.text', '0.00049741 tL-BTC'); + cy.get('#table-tx-vout tr').should('have.class', 'assetBox'); + }); + + it('show empty unblinded TX', () => { + cy.visit(`${basePath}/tx/c3d908ab77891e4c569b0df71aae90f4720b157019ebb20db176f4f9c4d626b8#blinded=`); + cy.waitForSkeletonGone(); + cy.get('#table-tx-vin tr:nth-child(1)').should('have.class', ''); + cy.get('#table-tx-vin tr:nth-child(1) .amount').should('contain.text', 'Confidential'); + cy.get('#table-tx-vout tr:nth-child(1)').should('have.class', ''); + cy.get('#table-tx-vout tr:nth-child(2)').should('have.class', ''); + cy.get('#table-tx-vout tr:nth-child(1) .amount').should('contain.text', 'Confidential'); + cy.get('#table-tx-vout tr:nth-child(2) .amount').should('contain.text', 'Confidential'); + }); + + it('show invalid unblinded TX hex', () => { + cy.visit(`${basePath}/tx/2477f220eef1d03f8ffa4a2861c275d155c3562adf0d79523aeeb0c59ee611ba#blinded=5000`); + cy.waitForSkeletonGone(); + cy.get('#table-tx-vin tr').should('have.class', ''); + cy.get('#table-tx-vout tr').should('have.class', ''); + cy.get('.error-unblinded' ).contains('Error: Invalid blinding data (invalid hex)'); + }); + + it('show first unblinded vout', () => { + cy.visit(`${basePath}/tx/0877bc0c7aa5c2b8d0e4b15450425879b8783c40e341806037a605ef836fb886#blinded=5000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,328de54e90e867a9154b4f1eb7fcab86267e880fa2ee9e53b41a91e61dab86e6,8885831e6b089eaf06889d53a24843f0da533d300a7b1527b136883a6819f3ae,5000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,aca78b953615d69ae0ae68c4c5c3c0ee077c10bc20ad3f0c5960706004e6cb56,d2ec175afe5f761e2dbd443faf46abbb7091f341deb3387e5787d812bdb2df9f,100000,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,4b54a4ca809b3844f34dd88b68617c4c866d92a02211f02ba355755bac20a1c6,eddd02e92b0cfbad8cab89828570a50f2c643bb2a54d886c86e25ce47e818685,99729,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,8b86d565c9549eb0352bb81ee576d01d064435b64fddcc045decebeb1d9913ce,b082ce3448d40d47b5b39f15d72b285f4a1046b636b56c25f32f498ece29d062,10000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,62b04ee86198d6b41681cdd0acb450ab366af727a010aaee8ba0b9e69ff43896,3f98429bca9b538dc943c22111f25d9c4448d45a63ff0f4e58b22fd434c0365e`); + cy.waitForSkeletonGone(); + cy.get('#table-tx-vout tr:nth-child(1)').should('have.class', 'assetBox'); + cy.get('#table-tx-vout tr:nth-child(1) .amount').should('contain.text', '0.00099729 tL-BTC'); + }); + + it('show second unblinded vout (asset)', () => { + cy.visit(`${basePath}/tx/0877bc0c7aa5c2b8d0e4b15450425879b8783c40e341806037a605ef836fb886#blinded=5000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,328de54e90e867a9154b4f1eb7fcab86267e880fa2ee9e53b41a91e61dab86e6,8885831e6b089eaf06889d53a24843f0da533d300a7b1527b136883a6819f3ae,5000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,aca78b953615d69ae0ae68c4c5c3c0ee077c10bc20ad3f0c5960706004e6cb56,d2ec175afe5f761e2dbd443faf46abbb7091f341deb3387e5787d812bdb2df9f,100000,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,4b54a4ca809b3844f34dd88b68617c4c866d92a02211f02ba355755bac20a1c6,eddd02e92b0cfbad8cab89828570a50f2c643bb2a54d886c86e25ce47e818685,99729,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,8b86d565c9549eb0352bb81ee576d01d064435b64fddcc045decebeb1d9913ce,b082ce3448d40d47b5b39f15d72b285f4a1046b636b56c25f32f498ece29d062,10000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,62b04ee86198d6b41681cdd0acb450ab366af727a010aaee8ba0b9e69ff43896,3f98429bca9b538dc943c22111f25d9c4448d45a63ff0f4e58b22fd434c0365e`); + cy.get('#table-tx-vout tr:nth-child(2)').should('have.class', 'assetBox'); + //TODO Update after the precision bug fix is merged + cy.get('#table-tx-vout tr:nth-child(2) .amount').should('contain.text', '0 TEST'); + }); + + it('should link to the asset page from the unblinded tx', () => { + cy.visit(`${basePath}/tx/0877bc0c7aa5c2b8d0e4b15450425879b8783c40e341806037a605ef836fb886#blinded=5000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,328de54e90e867a9154b4f1eb7fcab86267e880fa2ee9e53b41a91e61dab86e6,8885831e6b089eaf06889d53a24843f0da533d300a7b1527b136883a6819f3ae,5000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,aca78b953615d69ae0ae68c4c5c3c0ee077c10bc20ad3f0c5960706004e6cb56,d2ec175afe5f761e2dbd443faf46abbb7091f341deb3387e5787d812bdb2df9f,100000,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,4b54a4ca809b3844f34dd88b68617c4c866d92a02211f02ba355755bac20a1c6,eddd02e92b0cfbad8cab89828570a50f2c643bb2a54d886c86e25ce47e818685,99729,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,8b86d565c9549eb0352bb81ee576d01d064435b64fddcc045decebeb1d9913ce,b082ce3448d40d47b5b39f15d72b285f4a1046b636b56c25f32f498ece29d062,10000,38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5,62b04ee86198d6b41681cdd0acb450ab366af727a010aaee8ba0b9e69ff43896,3f98429bca9b538dc943c22111f25d9c4448d45a63ff0f4e58b22fd434c0365e`); + cy.get('#table-tx-vout tr:nth-child(2) .amount a').click().then(() => { + cy.waitForSkeletonGone(); + cy.url().should('contain', '/asset/38fca2d939696061a8f76d4e6b5eecd54e3b4221c846f24a6b279e79952850a5'); + }); + }); + + it('show invalid error unblinded TX', () => { + cy.visit(`${basePath}/tx/c3d908ab77891e4c569b0df71aae90f4720b157019ebb20db176f4f9c4d626b8#blinded=100000,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,df290ead654d7d110ebc5aaf0bcf11d5b5d360431a467f1cde0a856fde986893,33cb3a2fd2e76643843691cf44a78c5cd28ec652a414da752160ad63fbd37bc9,49741,144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49,edb0713bcbfcb3daabf601cb50978439667d208e15fed8a5ebbfea5696cda1d5,4de70115501e8c7d6bd763e229bf42781edeacf6e75e1d7bdfa4c63104bc508c`); + cy.waitForSkeletonGone(); + cy.get('#table-tx-vin tr').should('have.class', 'assetBox'); + cy.get('.error-unblinded' ).contains('Error: Invalid blinding data.'); + }); + + it('shows asset peg in/out and burn transactions', () => { + cy.visit(`${basePath}/asset/ac3e0ff248c5051ffd61e00155b7122e5ebc04fd397a0ecbdd4f4e4a56232926`); + cy.waitForSkeletonGone(); + cy.get('#table-tx-vout tr').not('.assetBox'); + cy.get('#table-tx-vin tr').not('.assetBox'); + }); + + }); + } else { + it.skip(`Tests cannot be run on the selected BASE_MODULE ${baseModule}`); + } +}); From 6637477ac9ae817bbb494d4618ba133f638f94f6 Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn Date: Thu, 20 Jan 2022 21:30:22 -0800 Subject: [PATCH 3/5] Update Liquid tests --- .../cypress/integration/liquid/liquid.spec.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/frontend/cypress/integration/liquid/liquid.spec.ts b/frontend/cypress/integration/liquid/liquid.spec.ts index 5661340f4..b705655d3 100644 --- a/frontend/cypress/integration/liquid/liquid.spec.ts +++ b/frontend/cypress/integration/liquid/liquid.spec.ts @@ -146,15 +146,22 @@ describe('Liquid', () => { it('show unblinded TX', () => { cy.visit(`${basePath}/tx/f2f41c0850e8e7e3f1af233161fd596662e67c11ef10ed15943884186fbb7f46#blinded=100000,6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d,0ab9f70650f16b1db8dfada05237f7d0d65191c3a13183da8a2ddddfbde9a2ad,fd98b2edc5530d76acd553f206a431f4c1fab27e10e290ad719582af878e98fc,2364760,6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d,90c7a43b15b905bca045ca42a01271cfe71d2efe3133f4197792c24505cb32ed,12eb5959d9293b8842e7dd8bc9aa9639fd3fd031c5de3ba911adeca94eb57a3a`); cy.waitForSkeletonGone(); + cy.get('#table-tx-vin tr:nth-child(1) .amount').should('contain.text', '0.02465000 L-BTC'); cy.get('#table-tx-vin tr').should('have.class', 'assetBox'); + cy.get('#table-tx-vout tr:nth-child(1) .amount').should('contain.text', '0.00100000 L-BTC'); + cy.get('#table-tx-vout tr:nth-child(2) .amount').should('contain.text', '0.02364760 L-BTC'); cy.get('#table-tx-vout tr').should('have.class', 'assetBox'); }); it('show empty unblinded TX', () => { cy.visit(`${basePath}/tx/f2f41c0850e8e7e3f1af233161fd596662e67c11ef10ed15943884186fbb7f46#blinded=`); cy.waitForSkeletonGone(); - cy.get('#table-tx-vin tr').should('have.class', ''); - cy.get('#table-tx-vout tr').should('have.class', ''); + cy.get('#table-tx-vin tr:nth-child(1)').should('have.class', ''); + cy.get('#table-tx-vin tr:nth-child(1) .amount').should('contain.text', 'Confidential'); + cy.get('#table-tx-vout tr:nth-child(1)').should('have.class', ''); + cy.get('#table-tx-vout tr:nth-child(2)').should('have.class', ''); + cy.get('#table-tx-vout tr:nth-child(1) .amount').should('contain.text', 'Confidential'); + cy.get('#table-tx-vout tr:nth-child(2) .amount').should('contain.text', 'Confidential'); }); it('show invalid unblinded TX hex', () => { @@ -168,12 +175,14 @@ describe('Liquid', () => { it('show first unblinded vout', () => { cy.visit(`${basePath}/tx/f2f41c0850e8e7e3f1af233161fd596662e67c11ef10ed15943884186fbb7f46#blinded=100000,6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d,0ab9f70650f16b1db8dfada05237f7d0d65191c3a13183da8a2ddddfbde9a2ad,fd98b2edc5530d76acd553f206a431f4c1fab27e10e290ad719582af878e98fc`); cy.waitForSkeletonGone(); - cy.get('#table-tx-vout tr:first-child()').should('have.class', 'assetBox'); + cy.get('#table-tx-vout tr:nth-child(1)').should('have.class', 'assetBox'); + cy.get('#table-tx-vout tr:nth-child(1) .amount').should('contain.text', '0.00100000 L-BTC'); }); it('show second unblinded vout', () => { cy.visit(`${basePath}/tx/f2f41c0850e8e7e3f1af233161fd596662e67c11ef10ed15943884186fbb7f46#blinded=2364760,6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d,90c7a43b15b905bca045ca42a01271cfe71d2efe3133f4197792c24505cb32ed,12eb5959d9293b8842e7dd8bc9aa9639fd3fd031c5de3ba911adeca94eb57a3a`); - cy.get('#table-tx-vout tr').should('have.class', 'assetBox'); + cy.get('#table-tx-vout tr:nth-child(2').should('have.class', 'assetBox'); + cy.get('#table-tx-vout tr:nth-child(2) .amount').should('contain.text', '0.02364760 L-BTC'); }); it('show invalid error unblinded TX', () => { From c88518797148c1719cd530a5f7914cb1785e3b4c Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn Date: Thu, 20 Jan 2022 21:31:14 -0800 Subject: [PATCH 4/5] Add an amount class vins and vouts to improve testing --- .../transactions-list/transactions-list.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/components/transactions-list/transactions-list.component.html b/frontend/src/app/components/transactions-list/transactions-list.component.html index 36aed7fe6..6eb262377 100644 --- a/frontend/src/app/components/transactions-list/transactions-list.component.html +++ b/frontend/src/app/components/transactions-list/transactions-list.component.html @@ -71,7 +71,7 @@ - +
@@ -170,7 +170,7 @@ - +
From 7bb95ff17708e3af68b203c091cb545dc6be0e8c Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn Date: Thu, 20 Jan 2022 21:43:13 -0800 Subject: [PATCH 5/5] Update Cypress GHA spec list --- .github/workflows/cypress.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 1b565e71a..832efcbbf 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -31,6 +31,10 @@ jobs: wait-on-timeout: 120 record: true parallel: true + spec: | + cypress/integration/mainnet/*.spec.ts + cypress/integration/signet/*.spec.ts + cypress/integration/testnet/*.spec.ts group: Tests on ${{ matrix.browser }} (Mempool) browser: ${{ matrix.browser }} ci-build-id: '${{ github.sha }}-${{ github.workflow }}-${{ github.event_name }}' @@ -50,7 +54,9 @@ jobs: wait-on-timeout: 120 record: true parallel: true - spec: cypress/integration/liquid/liquid.spec.ts + spec: | + cypress/integration/liquid/liquid.spec.ts + cypress/integration/liquidtestnet/liquidtestnet.spec.ts group: Tests on ${{ matrix.browser }} (Liquid) browser: ${{ matrix.browser }} ci-build-id: '${{ github.sha }}-${{ github.workflow }}-${{ github.event_name }}'