mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-06-27 08:39:49 +00:00
* Fetch N number of records in M milliseconds timeout before streaming the records * Implement the functionality inside socket data streamer * Reverse the `fetchData` slice * #run_acceptance_tests * Trying to fix the tests. #run_acceptance_tests * javascript compilation error. * #run_acceptance_tests * Name the method better * Upgrade Basenine version to `v0.8.0` * Fix some issues related to `Fetch` * Upgrade the Basenine version in `Dockerfile` as well * Remove underscore from the parameter name * Parameterize fetch timeout ms Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com> Co-authored-by: Roee Gadot <roee.gadot@up9.com>
178 lines
6.8 KiB
JavaScript
178 lines
6.8 KiB
JavaScript
export const valueTabs = {
|
|
response: 'RESPONSE',
|
|
request: 'REQUEST',
|
|
none: null
|
|
}
|
|
|
|
const maxEntriesInDom = 13;
|
|
|
|
export function isValueExistsInElement(shouldInclude, content, domPathToContainer){
|
|
it(`should ${shouldInclude ? '' : 'not'} include '${content}'`, function () {
|
|
cy.get(domPathToContainer).then(htmlText => {
|
|
const allTextString = htmlText.text();
|
|
if (allTextString.includes(content) !== shouldInclude)
|
|
throw new Error(`One of the containers part contains ${content}`)
|
|
});
|
|
});
|
|
}
|
|
|
|
export function resizeToHugeMizu() {
|
|
cy.viewport(Cypress.env('mizuWidth'), Cypress.env('hugeMizuHeight'));
|
|
}
|
|
|
|
export function resizeToNormalMizu() {
|
|
cy.viewport(Cypress.env('mizuWidth'), Cypress.env('normalMizuHeight'));
|
|
}
|
|
|
|
export function verifyMinimumEntries() {
|
|
const entriesSent = Cypress.env('entriesCount');
|
|
const minimumEntries = Math.round((0.75 * entriesSent));
|
|
|
|
it(`Making sure that mizu shows at least ${minimumEntries} entries`, function () {
|
|
cy.get('#total-entries').then(number => {
|
|
const getNum = () => {
|
|
return parseInt(number.text());
|
|
};
|
|
|
|
cy.wrap({num: getNum}).invoke('num').should('be.gt', minimumEntries);
|
|
});
|
|
});
|
|
}
|
|
|
|
export function leftTextCheck(entryId, path, expectedText) {
|
|
cy.get(`#list #entry-${entryId} ${path}`).invoke('text').should('eq', expectedText);
|
|
}
|
|
|
|
export function leftOnHoverCheck(entryId, path, filterName) {
|
|
cy.get(`#list #entry-${entryId} ${path}`).trigger('mouseover');
|
|
cy.get(`#list #entry-${entryId} [data-cy='QueryableTooltip']`).invoke('text').should('match', new RegExp(filterName));
|
|
}
|
|
|
|
export function rightTextCheck(path, expectedText) {
|
|
cy.get(`#rightSideContainer ${path}`).should('have.text', expectedText);
|
|
}
|
|
|
|
export function rightOnHoverCheck(path, expectedText) {
|
|
cy.get(`#rightSideContainer ${path}`).trigger('mouseover');
|
|
cy.get(`#rightSideContainer [data-cy='QueryableTooltip']`).invoke('text').should('match', new RegExp(expectedText));
|
|
}
|
|
|
|
export function checkFilterByMethod(funcDict) {
|
|
const {protocol, method, methodQuery, summary, summaryQuery} = funcDict;
|
|
const summaryDict = getSummaryDict(summary, summaryQuery);
|
|
const methodDict = getMethodDict(method, methodQuery);
|
|
const protocolDict = getProtocolDict(protocol.name, protocol.text);
|
|
|
|
it(`Testing the method: ${method}`, function () {
|
|
// applying filter
|
|
cy.get('.w-tc-editor-text').clear().type(methodQuery);
|
|
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;
|
|
|
|
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);
|
|
|
|
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;
|
|
}
|
|
}
|
|
});
|
|
resizeIfNeeded(len);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
export function getEntryId(id) {
|
|
// take the second part from the string (entry-<ID>)
|
|
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;
|
|
const summaryDict = getSummaryDict(summary);
|
|
|
|
leftOnHoverCheck(entryId, methodDict.pathLeft, methodDict.expectedOnHover);
|
|
leftOnHoverCheck(entryId, protocolDict.pathLeft, protocolDict.expectedOnHover);
|
|
if (summaryDict)
|
|
leftOnHoverCheck(entryId, summaryDict.pathLeft, summaryDict.expectedOnHover);
|
|
|
|
cy.get(`#${entry.id}`).click();
|
|
|
|
rightTextCheck(methodDict.pathRight, methodDict.expectedText);
|
|
rightTextCheck(protocolDict.pathRight, protocolDict.expectedTextRight);
|
|
if (summaryDict)
|
|
rightTextCheck(summaryDict.pathRight, summaryDict.expectedText);
|
|
|
|
rightOnHoverCheck(methodDict.pathRight, methodDict.expectedOnHover);
|
|
rightOnHoverCheck(protocolDict.pathRight, protocolDict.expectedOnHover);
|
|
if (summaryDict)
|
|
rightOnHoverCheck(summaryDict.pathRight, summaryDict.expectedOnHover);
|
|
|
|
if (value) {
|
|
if (value.tab === valueTabs.response)
|
|
// temporary fix, change to some "data-cy" attribute,
|
|
// this will fix the issue that happen because we have "response:" in the header of the right side
|
|
cy.get('#rightSideContainer > :nth-child(3)').contains('Response').click();
|
|
cy.get(Cypress.env('bodyJsonClass')).then(text => {
|
|
expect(text.text()).to.match(value.regex)
|
|
});
|
|
}
|
|
}
|
|
|
|
function getSummaryDict(value, query) {
|
|
if (value) {
|
|
return {
|
|
pathLeft: '> :nth-child(2) > :nth-child(1) > :nth-child(2) > :nth-child(2)',
|
|
pathRight: '> :nth-child(2) > :nth-child(1) > :nth-child(1) > :nth-child(2) > :nth-child(2)',
|
|
expectedText: value,
|
|
expectedOnHover: query
|
|
};
|
|
}
|
|
else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function getMethodDict(value, query) {
|
|
return {
|
|
pathLeft: '> :nth-child(2) > :nth-child(1) > :nth-child(1) > :nth-child(2)',
|
|
pathRight: '> :nth-child(2) > :nth-child(1) > :nth-child(1) > :nth-child(1) > :nth-child(2)',
|
|
expectedText: value,
|
|
expectedOnHover: query
|
|
};
|
|
}
|
|
|
|
function getProtocolDict(protocol, protocolText) {
|
|
return {
|
|
pathLeft: '> :nth-child(1) > :nth-child(1)',
|
|
pathRight: '> :nth-child(1) > :nth-child(1) > :nth-child(1) > :nth-child(1)',
|
|
expectedTextLeft: protocol.toUpperCase(),
|
|
expectedTextRight: protocolText,
|
|
expectedOnHover: protocol.toLowerCase()
|
|
};
|
|
}
|