diff --git a/acceptanceTests/cypress/integration/testHelpers/TrafficHelper.js b/acceptanceTests/cypress/integration/testHelpers/TrafficHelper.js index 1fb286760..4d38fe7bf 100644 --- a/acceptanceTests/cypress/integration/testHelpers/TrafficHelper.js +++ b/acceptanceTests/cypress/integration/testHelpers/TrafficHelper.js @@ -58,7 +58,7 @@ export function rightOnHoverCheck(path, expectedText) { } export function checkFilterByMethod(funcDict) { - const {protocol, method, methodQuery, summary, summaryQuery} = funcDict; + const {protocol, method, methodQuery, summary, summaryQuery, numberOfRecords} = funcDict; const summaryDict = getSummaryDict(summary, summaryQuery); const methodDict = getMethodDict(method, methodQuery); const protocolDict = getProtocolDict(protocol.name, protocol.text); @@ -69,47 +69,53 @@ export function checkFilterByMethod(funcDict) { cy.get('[type="submit"]').click(); cy.get('.w-tc-editor').should('have.attr', 'style').and('include', Cypress.env('greenFilterColor')); - cy.get('#entries-length').should('not.have.text', '0').then(() => { - cy.get(`#list [id]`).then(elements => { - const listElmWithIdAttr = Object.values(elements); - let doneCheckOnFirst = false; + waitForFetch(numberOfRecords); + pauseStream(); - cy.get('#entries-length').invoke('text').then(len => { - resizeIfNeeded(len); - listElmWithIdAttr.forEach(entry => { - if (entry?.id && entry.id.match(RegExp(/entry-(\d{24})$/gm))) { - const entryId = getEntryId(entry.id); + cy.get(`#list [id^=entry]`).then(elements => { + const listElmWithIdAttr = Object.values(elements); + let doneCheckOnFirst = false; - leftTextCheck(entryId, methodDict.pathLeft, methodDict.expectedText); - leftTextCheck(entryId, protocolDict.pathLeft, protocolDict.expectedTextLeft); - if (summaryDict) - leftTextCheck(entryId, summaryDict.pathLeft, summaryDict.expectedText); + cy.get('#entries-length').invoke('text').then(len => { + listElmWithIdAttr.forEach(entry => { + if (entry?.id && entry.id.match(RegExp(/entry-(\d{24})$/gm))) { + const entryId = getEntryId(entry.id); - if (!doneCheckOnFirst) { - deepCheck(funcDict, protocolDict, methodDict, entry); - doneCheckOnFirst = true; - } - } - }); - resizeIfNeeded(len); - }); + leftTextCheck(entryId, methodDict.pathLeft, methodDict.expectedText); + leftTextCheck(entryId, protocolDict.pathLeft, protocolDict.expectedTextLeft); + if (summaryDict) + leftTextCheck(entryId, summaryDict.pathLeft, summaryDict.expectedText); + + if (!doneCheckOnFirst) { + deepCheck(funcDict, protocolDict, methodDict, entry); + doneCheckOnFirst = true; + } + } }); }); }); + }); } +export const refreshWaitTimeout = 10000; + +export function waitForFetch(gt) { + cy.get('#entries-length', {timeout: refreshWaitTimeout}).should((el) => { + expect(parseInt(el.text().trim(), 10)).to.be.greaterThan(gt); + }); +} + +export function pauseStream() { + cy.get('#pause-icon').click(); + cy.get('#pause-icon').should('not.be.visible'); +} + + export function getEntryId(id) { // take the second part from the string (entry-) return id.split('-')[1]; } -function resizeIfNeeded(entriesLen) { - if (entriesLen > maxEntriesInDom){ - Cypress.config().viewportHeight === Cypress.env('normalMizuHeight') ? - resizeToHugeMizu() : resizeToNormalMizu() - } -} - function deepCheck(generalDict, protocolDict, methodDict, entry) { const entryId = getEntryId(entry.id); const {summary, value} = generalDict; diff --git a/acceptanceTests/cypress/integration/tests/Rabbit.js b/acceptanceTests/cypress/integration/tests/Rabbit.js index d6d13e102..137c622e6 100644 --- a/acceptanceTests/cypress/integration/tests/Rabbit.js +++ b/acceptanceTests/cypress/integration/tests/Rabbit.js @@ -5,6 +5,7 @@ it('opening mizu', function () { }); const rabbitProtocolDetails = {name: 'AMQP', text: 'Advanced Message Queuing Protocol 0-9-1'}; +const numberOfRecords = 5; checkFilterByMethod({ protocol: rabbitProtocolDetails, @@ -12,6 +13,7 @@ checkFilterByMethod({ methodQuery: 'request.method == "exchange declare"', summary: 'exchange', summaryQuery: 'request.exchange == "exchange"', + numberOfRecords: numberOfRecords, value: null }); @@ -21,6 +23,7 @@ checkFilterByMethod({ methodQuery: 'request.method == "queue declare"', summary: 'queue', summaryQuery: 'request.queue == "queue"', + numberOfRecords: numberOfRecords, value: null }); @@ -30,6 +33,7 @@ checkFilterByMethod({ methodQuery: 'request.method == "queue bind"', summary: 'queue', summaryQuery: 'request.queue == "queue"', + numberOfRecords: numberOfRecords, value: null }); @@ -39,6 +43,7 @@ checkFilterByMethod({ methodQuery: 'request.method == "basic publish"', summary: 'exchange', summaryQuery: 'request.exchange == "exchange"', + numberOfRecords: numberOfRecords, value: {tab: valueTabs.request, regex: /^message$/mg} }); @@ -48,6 +53,7 @@ checkFilterByMethod({ methodQuery: 'request.method == "basic consume"', summary: 'queue', summaryQuery: 'request.queue == "queue"', + numberOfRecords: numberOfRecords, value: null }); @@ -57,5 +63,6 @@ checkFilterByMethod({ methodQuery: 'request.method == "basic deliver"', summary: 'exchange', summaryQuery: 'request.queue == "exchange"', + numberOfRecords: numberOfRecords, value: {tab: valueTabs.request, regex: /^message$/mg} }); diff --git a/acceptanceTests/cypress/integration/tests/Redis.js b/acceptanceTests/cypress/integration/tests/Redis.js index a68849779..ba264896b 100644 --- a/acceptanceTests/cypress/integration/tests/Redis.js +++ b/acceptanceTests/cypress/integration/tests/Redis.js @@ -5,6 +5,7 @@ it('opening mizu', function () { }); const redisProtocolDetails = {name: 'redis', text: 'Redis Serialization Protocol'}; +const numberOfRecords = 5; checkFilterByMethod({ protocol: redisProtocolDetails, @@ -12,6 +13,7 @@ checkFilterByMethod({ methodQuery: 'request.command == "PING"', summary: null, summaryQuery: '', + numberOfRecords: numberOfRecords, value: null }) @@ -21,6 +23,7 @@ checkFilterByMethod({ methodQuery: 'request.command == "SET"', summary: 'key', summaryQuery: 'request.key == "key"', + numberOfRecords: numberOfRecords, value: {tab: valueTabs.request, regex: /^\[value, keepttl]$/mg} }) @@ -30,6 +33,7 @@ checkFilterByMethod({ methodQuery: 'request.command == "EXISTS"', summary: 'key', summaryQuery: 'request.key == "key"', + numberOfRecords: numberOfRecords, value: {tab: valueTabs.response, regex: /^1$/mg} }) @@ -39,6 +43,7 @@ checkFilterByMethod({ methodQuery: 'request.command == "GET"', summary: 'key', summaryQuery: 'request.key == "key"', + numberOfRecords: numberOfRecords, value: {tab: valueTabs.response, regex: /^value$/mg} }) @@ -48,5 +53,6 @@ checkFilterByMethod({ methodQuery: 'request.command == "DEL"', summary: 'key', summaryQuery: 'request.key == "key"', + numberOfRecords: numberOfRecords, value: {tab: valueTabs.response, regex: /^1$|^0$/mg} }) diff --git a/acceptanceTests/cypress/integration/tests/UiTest.js b/acceptanceTests/cypress/integration/tests/UiTest.js index 83272b40c..c45a548f3 100644 --- a/acceptanceTests/cypress/integration/tests/UiTest.js +++ b/acceptanceTests/cypress/integration/tests/UiTest.js @@ -7,12 +7,12 @@ import { resizeToNormalMizu, rightOnHoverCheck, rightTextCheck, - verifyMinimumEntries + verifyMinimumEntries, + refreshWaitTimeout, + waitForFetch, + pauseStream } from "../testHelpers/TrafficHelper"; -const refreshWaitTimeout = 10000; - - const fullParam = Cypress.env('arrayDict'); // "Name:fooNamespace:barName:foo1Namespace:bar1" const podsArray = fullParam.split('Name:').slice(1); // ["fooNamespace:bar", "foo1Namespace:bar1"] podsArray.forEach((podStr, index) => { @@ -70,7 +70,8 @@ checkFilter({ leftSideExpectedText: 'HTTP', rightSidePath: '[title=HTTP]', rightSideExpectedText: 'Hypertext Transfer Protocol -- HTTP/1.1', - applyByCtrlEnter: true + applyByCtrlEnter: true, + numberOfRecords: 20, }); checkFilter({ @@ -79,7 +80,8 @@ checkFilter({ leftSideExpectedText: '200', rightSidePath: '> :nth-child(2) [title="Status Code"]', rightSideExpectedText: '200', - applyByCtrlEnter: false + applyByCtrlEnter: false, + numberOfRecords: 20 }); if (Cypress.env('shouldCheckSrcAndDest')) { @@ -91,7 +93,8 @@ if (Cypress.env('shouldCheckSrcAndDest')) { leftSideExpectedText: '[Unresolved]', rightSidePath: '> :nth-child(2) [title="Source Name"]', rightSideExpectedText: '[Unresolved]', - applyByCtrlEnter: false + applyByCtrlEnter: false, + numberOfRecords: 20 }); checkFilter({ @@ -100,7 +103,8 @@ if (Cypress.env('shouldCheckSrcAndDest')) { leftSideExpectedText: 'httpbin.mizu-tests', rightSidePath: '> :nth-child(2) > :nth-child(2) > :nth-child(2) > :nth-child(3) > :nth-child(2)', rightSideExpectedText: 'httpbin.mizu-tests', - applyByCtrlEnter: false + applyByCtrlEnter: false, + numberOfRecords: 20 }); } @@ -110,7 +114,8 @@ checkFilter({ leftSideExpectedText: 'GET', rightSidePath: '> :nth-child(2) > :nth-child(2) > :nth-child(1) > :nth-child(1) > :nth-child(2)', rightSideExpectedText: 'GET', - applyByCtrlEnter: true + applyByCtrlEnter: true, + numberOfRecords: 20 }); checkFilter({ @@ -119,7 +124,8 @@ checkFilter({ leftSideExpectedText: '/get', rightSidePath: '> :nth-child(2) > :nth-child(2) > :nth-child(1) > :nth-child(2) > :nth-child(2)', rightSideExpectedText: '/get', - applyByCtrlEnter: false + applyByCtrlEnter: false, + numberOfRecords: 20 }); checkFilter({ @@ -128,7 +134,8 @@ checkFilter({ leftSideExpectedText: '127.0.0.1', rightSidePath: '> :nth-child(2) [title="Source IP"]', rightSideExpectedText: '127.0.0.1', - applyByCtrlEnter: false + applyByCtrlEnter: false, + numberOfRecords: 20 }); checkFilterNoResults('request.method == "POST"'); @@ -187,7 +194,8 @@ function checkFilter(filterDetails) { rightSidePath, rightSideExpectedText, leftSideExpectedText, - applyByCtrlEnter + applyByCtrlEnter, + numberOfRecords } = filterDetails; const entriesForDeeperCheck = 5; @@ -200,7 +208,7 @@ function checkFilter(filterDetails) { if (!applyByCtrlEnter) cy.get('[type="submit"]').click(); - waitForFetch(); + waitForFetch(numberOfRecords); pauseStream(); cy.get(`#list [id^=entry]`).last().then(elem => { @@ -231,22 +239,11 @@ function checkFilter(filterDetails) { // reloading then waiting for the entries number to load resizeToNormalMizu(); cy.reload(); - waitForFetch(); + waitForFetch(numberOfRecords); pauseStream(); }); } -function waitForFetch() { - cy.get('#entries-length', {timeout: refreshWaitTimeout}).should((el) => { - expect(parseInt(el.text().trim(), 10)).to.be.greaterThan(20); - }); -} - -function pauseStream() { - cy.get('#pause-icon').click(); - cy.get('#pause-icon').should('not.be.visible'); -} - function deeperCheck(leftSidePath, rightSidePath, filterName, rightSideExpectedText, entriesNumToCheck) { cy.get(`#list [id^=entry]`).each((element, index) => { if (index < entriesNumToCheck) {