Commit b0ddaca4 authored by isstuev's avatar isstuev

change border color, add tests

parent 9c45f200
export const solidityscanReport = { export const solidityscanReportAverage = {
scan_report: { scan_report: {
scan_status: 'scan_done', scan_status: 'scan_done',
scan_summary: { scan_summary: {
...@@ -19,3 +19,47 @@ export const solidityscanReport = { ...@@ -19,3 +19,47 @@ export const solidityscanReport = {
scanner_reference_url: 'https://solidityscan.com/quickscan/0xc1EF7811FF2ebFB74F80ed7423f2AdAA37454be2/blockscout/eth-goerli?ref=blockscout', scanner_reference_url: 'https://solidityscan.com/quickscan/0xc1EF7811FF2ebFB74F80ed7423f2AdAA37454be2/blockscout/eth-goerli?ref=blockscout',
}, },
}; };
export const solidityscanReportGreat = {
scan_report: {
scan_status: 'scan_done',
scan_summary: {
issue_severity_distribution: {
critical: 0,
gas: 0,
high: 0,
informational: 0,
low: 0,
medium: 0,
},
lines_analyzed_count: 18,
scan_time_taken: 1,
score: '3.61',
score_v2: '100',
threat_score: '94.74',
},
scanner_reference_url: 'https://solidityscan.com/quickscan/0xc1EF7811FF2ebFB74F80ed7423f2AdAA37454be2/blockscout/eth-goerli?ref=blockscout',
},
};
export const solidityscanReportLow = {
scan_report: {
scan_status: 'scan_done',
scan_summary: {
issue_severity_distribution: {
critical: 2,
gas: 1,
high: 3,
informational: 0,
low: 2,
medium: 10,
},
lines_analyzed_count: 18,
scan_time_taken: 1,
score: '3.61',
score_v2: '22.22',
threat_score: '94.74',
},
scanner_reference_url: 'https://solidityscan.com/quickscan/0xc1EF7811FF2ebFB74F80ed7423f2AdAA37454be2/blockscout/eth-goerli?ref=blockscout',
},
};
import { test, expect } from '@playwright/experimental-ct-react'; import { test, expect } from '@playwright/experimental-ct-react';
import React from 'react'; import React from 'react';
import { solidityscanReport as solidityscanReportMock } from 'mocks/contract/solidityscanReport'; import * as solidityscanReportMock from 'mocks/contract/solidityscanReport';
import TestApp from 'playwright/TestApp'; import TestApp from 'playwright/TestApp';
import buildApiUrl from 'playwright/utils/buildApiUrl'; import buildApiUrl from 'playwright/utils/buildApiUrl';
...@@ -10,10 +10,10 @@ import SolidityscanReport from './SolidityscanReport'; ...@@ -10,10 +10,10 @@ import SolidityscanReport from './SolidityscanReport';
const addressHash = 'hash'; const addressHash = 'hash';
const REPORT_API_URL = buildApiUrl('contract_solidityscan_report', { hash: addressHash }); const REPORT_API_URL = buildApiUrl('contract_solidityscan_report', { hash: addressHash });
test('base view +@dark-mode +@mobile', async({ mount, page }) => { test('average report +@dark-mode +@mobile', async({ mount, page }) => {
await page.route(REPORT_API_URL, (route) => route.fulfill({ await page.route(REPORT_API_URL, (route) => route.fulfill({
status: 200, status: 200,
body: JSON.stringify(solidityscanReportMock), body: JSON.stringify(solidityscanReportMock.solidityscanReportAverage),
})); }));
const component = await mount( const component = await mount(
...@@ -21,6 +21,47 @@ test('base view +@dark-mode +@mobile', async({ mount, page }) => { ...@@ -21,6 +21,47 @@ test('base view +@dark-mode +@mobile', async({ mount, page }) => {
<SolidityscanReport hash={ addressHash }/> <SolidityscanReport hash={ addressHash }/>
</TestApp>, </TestApp>,
); );
await expect(page).toHaveScreenshot({ clip: { x: 0, y: 0, width: 100, height: 50 } });
await component.getByLabel('SolidityScan score').click();
await expect(page).toHaveScreenshot({ clip: { x: 0, y: 0, width: 400, height: 500 } });
});
test('great report', async({ mount, page }) => {
await page.route(REPORT_API_URL, (route) => route.fulfill({
status: 200,
body: JSON.stringify(solidityscanReportMock.solidityscanReportGreat),
}));
const component = await mount(
<TestApp>
<SolidityscanReport hash={ addressHash }/>
</TestApp>,
);
await expect(page).toHaveScreenshot({ clip: { x: 0, y: 0, width: 100, height: 50 } });
await component.getByLabel('SolidityScan score').click();
await expect(page).toHaveScreenshot({ clip: { x: 0, y: 0, width: 400, height: 500 } });
});
test('low report', async({ mount, page }) => {
await page.route(REPORT_API_URL, (route) => route.fulfill({
status: 200,
body: JSON.stringify(solidityscanReportMock.solidityscanReportLow),
}));
const component = await mount(
<TestApp>
<SolidityscanReport hash={ addressHash }/>
</TestApp>,
);
await expect(page).toHaveScreenshot({ clip: { x: 0, y: 0, width: 100, height: 50 } });
await component.getByLabel('SolidityScan score').click(); await component.getByLabel('SolidityScan score').click();
await expect(page).toHaveScreenshot({ clip: { x: 0, y: 0, width: 400, height: 500 } }); await expect(page).toHaveScreenshot({ clip: { x: 0, y: 0, width: 400, height: 500 } });
......
...@@ -91,6 +91,7 @@ const SolidityscanReport = ({ className, hash }: Props) => { ...@@ -91,6 +91,7 @@ const SolidityscanReport = ({ className, hash }: Props) => {
<Button <Button
className={ className } className={ className }
color={ scoreColor } color={ scoreColor }
borderColor={ scoreColor }
size="sm" size="sm"
variant="outline" variant="outline"
colorScheme="gray" colorScheme="gray"
...@@ -130,7 +131,7 @@ const SolidityscanReport = ({ className, hash }: Props) => { ...@@ -130,7 +131,7 @@ const SolidityscanReport = ({ className, hash }: Props) => {
<Text color={ scoreColor } fontWeight={ 500 }>Security score is { scoreLevel }</Text> <Text color={ scoreColor } fontWeight={ 500 }>Security score is { scoreLevel }</Text>
</Box> </Box>
</Flex> </Flex>
{ vulnerabilities && vulnerabilitiesCount && ( { vulnerabilities && vulnerabilitiesCount > 0 && (
<Box mb={ 5 }> <Box mb={ 5 }>
<Text py="7px" variant="secondary" fontSize="xs" fontWeight={ 500 }>Vulnerabilities distribution</Text> <Text py="7px" variant="secondary" fontSize="xs" fontWeight={ 500 }>Vulnerabilities distribution</Text>
<Grid templateColumns="20px 1fr 100px" alignItems="center" rowGap={ 2 }> <Grid templateColumns="20px 1fr 100px" alignItems="center" rowGap={ 2 }>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment