@@ -167,3 +123,42 @@ export default function GalleryOfImages(properties: {
);
}
+
+export function GalleryOfImagesLeftToRight(properties: {
+ loop?: boolean;
+ children: ReactNode[];
+ maxWidth?: string;
+ height?: string;
+}): ReactNode {
+ const [emblaReference] = useEmblaCarousel({
+ loop: properties.loop,
+ align: 'center',
+ dragFree: true,
+ });
+
+ return (
+
+
+ {properties.children.map((child, index) => (
+
+ {child}
+
+ ))}
+
+
+ );
+}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/progress-rate.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/progress-rate.tsx
index b506e067..9aab02f2 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/progress-rate.tsx
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/progress-rate.tsx
@@ -33,6 +33,7 @@ export default function RenderProgress(properties: {
strokeColor={'green'}
gapDegree={40}
size={85}
+ className={'passed'}
/>
@@ -42,6 +43,7 @@ export default function RenderProgress(properties: {
strokeColor={'red'}
gapDegree={40}
size={85}
+ className="failed"
/>
@@ -52,6 +54,7 @@ export default function RenderProgress(properties: {
strokeColor={'yellow'}
gapDegree={40}
size={85}
+ className="skipped"
/>
{properties.broken ? (
@@ -72,6 +75,7 @@ export default function RenderProgress(properties: {
strokeColor={'volcano'}
gapDegree={40}
size={85}
+ className="broken"
/>
) : (
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/renderers.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/renderers.tsx
index 7988dd2a..d15de4d3 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/renderers.tsx
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/components/utils/renderers.tsx
@@ -1,3 +1,4 @@
+import type { CSSProperties } from 'react';
import React, { type ReactNode } from 'react';
import type { statusOfEntity } from 'src/types/session-records';
import ReloadOutlined from '@ant-design/icons/ReloadOutlined';
@@ -11,6 +12,13 @@ import type { possibleEntityNames } from 'src/types/session-records';
import Avatar from 'antd/lib/avatar/avatar';
import GraphCardCss from 'src/styles/GraphCard.module.css';
import { Badge, Tooltip } from 'antd/lib';
+import { showOnly } from 'src/types/ui-constants';
+import type {
+ ParsedSuiteRecord,
+ ParsedTestRecord,
+} from 'src/types/parsed-records';
+import { testStatusText } from '../core/TestEntity/extractors';
+import { LOCATORS } from 'handshake-utils';
export function RenderStatus(properties: {
value: string;
@@ -24,6 +32,7 @@ export function RenderStatus(properties: {
position: 'relative',
top: '-1px',
}}
+ className={`${showOnly} ${LOCATORS.RUNS.statusForTestEntity}`}
>
✅
@@ -31,7 +40,9 @@ export function RenderStatus(properties: {
}
case 'FAILED': {
return (
-
+
❌
);
@@ -39,7 +50,7 @@ export function RenderStatus(properties: {
case 'SKIPPED': {
return (
);
}
@@ -74,7 +85,7 @@ export function RenderStatus(properties: {
}}
spin
title="Retried Suite"
- className="retried-glow"
+ className={`retried-glow ${showOnly} ${LOCATORS.RUNS.statusForTestEntity}`}
/>
);
}
@@ -142,6 +153,7 @@ export function RenderInfo(properties: {
bodyStyle={{
padding: '6px',
paddingTop: '12px',
+ userSelect: 'none',
paddingBottom: '12px',
}}
>
@@ -154,3 +166,41 @@ export function RenderInfo(properties: {
);
}
+
+export function RenderTestItem(properties: {
+ record: ParsedTestRecord | ParsedSuiteRecord;
+ layoutStyle?: CSSProperties;
+}): ReactNode {
+ return (
+
+
+
+ {properties.record.Title}
+
+ {properties.record.type === 'SUITE' ||
+ // @ts-expect-error we do not have isBroken for test
+ !properties.record?.isBroken ? (
+ <>>
+ ) : (
+
+
+
+ )}
+
+ );
+}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/detailed.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/detailed.tsx
index e169920d..9dede41e 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/detailed.tsx
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/detailed.tsx
@@ -93,14 +93,19 @@ export default function TestRunResults(
testRun.Started[0],
testRun.Tests,
);
+ const images = parseImageRecords(
+ properties.images,
+ properties.detailsOfTestRun.testID,
+ );
return {
detailsOfTestRun: testRun,
- images: parseImageRecords(
- properties.images,
- properties.detailsOfTestRun.testID,
- ),
suites,
- tests: parseTests(properties.tests, suites),
+ tests: parseTests(
+ properties.tests,
+ suites,
+ images,
+ properties.assertions,
+ ),
retriedRecords: parseRetriedRecords(properties.retriedRecords),
};
}, [properties]);
@@ -108,6 +113,7 @@ export default function TestRunResults(
const [viewMode, setViewMode] = useState(
menuTabs.testEntitiesTab.gridViewMode,
);
+ const [highlight, setHightLight] = useState('');
useEffect(() => {
if (!router.isReady) return;
@@ -120,8 +126,12 @@ export default function TestRunResults(
-
+
);
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/index.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/index.tsx
index 7f62e2f7..fb77fbdc 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/index.tsx
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/[id]/index.tsx
@@ -26,6 +26,8 @@ import {
parseDetailedTestRun,
parseImageRecords,
} from 'src/components/parse-utils';
+import Head from 'next/head';
+import { TEXT } from 'handshake-utils';
export async function getStaticProps(prepareProperties: {
params: {
@@ -79,6 +81,7 @@ export async function getStaticProps(prepareProperties: {
sessionCount: 0,
imageCount: 0,
brokenTests: 0,
+ isRecent: false,
};
await connection.each<{ key: string; value: number }>(
@@ -125,11 +128,19 @@ export default function TestRunResults(
}, [properties]);
return (
-
-
-
-
-
+ <>
+
+ {TEXT.OVERVIEW.greet}
+
+
+
+
+
+
+
+
+
+ >
);
}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/index.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/index.tsx
index a6e6615f..f63647f7 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/index.tsx
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/RUNS/index.tsx
@@ -1,11 +1,12 @@
import getConnection from 'src/components/scripts/connection';
import type TestRunRecord from 'src/types/test-run-records';
import GridOfRuns from 'src/components/core/ListOfRuns';
-
import { type GetStaticPropsResult } from 'next';
import React, { type ReactNode } from 'react';
import currentExportConfig from 'src/components/scripts/config';
import sqlFile from 'src/components/scripts/RunPage/script';
+import Head from 'next/head';
+import { TEXT } from 'handshake-utils';
export async function getStaticProps(): Promise<
GetStaticPropsResult<{ runs?: TestRunRecord[] }>
@@ -29,8 +30,17 @@ export async function getStaticProps(): Promise<
}
export default function AllTestRunsDisplayedHere(properties: {
- runs?: TestRunRecord[];
+ runs: TestRunRecord[];
}): ReactNode {
- if (properties.runs == undefined) return <>>;
- return ;
+ return (
+ <>
+
+ {TEXT.RUNS.greet}
+
+
+
+
+
+ >
+ );
}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_app.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_app.tsx
index 3f37892d..0d9338e6 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_app.tsx
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_app.tsx
@@ -1,10 +1,16 @@
import React, { type ReactNode } from 'react';
import type { AppProps } from 'next/app';
import withTheme from 'src/components/theme';
+import '../../public/antd.min.css';
import 'src/styles/globals.css';
+import { StyleProvider } from '@ant-design/cssinjs';
const App = ({ Component, pageProps }: AppProps): ReactNode => {
- return withTheme();
+ return (
+
+ {withTheme()}
+
+ );
};
export default App;
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_document.tsx b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_document.tsx
index bc70e2db..290f435a 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_document.tsx
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/pages/_document.tsx
@@ -1,3 +1,4 @@
+import { TEXT } from 'handshake-utils';
import Document, {
Html,
Head,
@@ -5,16 +6,19 @@ import Document, {
NextScript,
type DocumentContext,
} from 'next/document';
-import React, { type ReactNode } from 'react';
+import type { ReactNode } from 'react';
+import React from 'react';
const MyDocument = (): ReactNode => (
-
-
-
-
-
-
-
+ <>
+
+
+
+
+
+
+
+ >
);
MyDocument.getInitialProps = async (context: DocumentContext) => {
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/globals.css b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/globals.css
index a5d53bfc..56361b06 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/globals.css
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/globals.css
@@ -1,5 +1,3 @@
-@import url('./antd.min.css');
-
:root {
--card-color: #121212;
--background-color: #262626;
@@ -101,3 +99,9 @@ body {
-moz-box-shadow: 0px 0px 20px 0px rgba(28, 27, 28, 0.9);
box-shadow: 0px 0px 20px 0px rgba(28, 27, 28, 0.9);
}
+
+.ant-badge-count,
+.show-only,
+.ant-image {
+ user-select: none;
+}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/panelResizer.module.css b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/panelResizer.module.css
index ae17458d..58c0e496 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/panelResizer.module.css
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/styles/panelResizer.module.css
@@ -1,8 +1,8 @@
.panelResizer {
border: 1px solid rgba(255, 255, 255, 0.15);
- width: 5px;
- margin-left: 3px;
- margin-right: 3px;
+ width: 6px;
+ margin-left: 6px;
+ margin-right: 6px;
border-radius: 20px;
background-color: var(--background-color);
}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/parsed-records.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/parsed-records.ts
index a9037840..753a113c 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/parsed-records.ts
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/parsed-records.ts
@@ -1,7 +1,13 @@
import type { Dayjs } from 'dayjs';
import type { statusOfEntity } from 'src/types/session-records';
import type { Duration } from 'dayjs/plugin/duration';
-import type { ErrorRecord, SimpleSuiteDetails } from './test-entity-related';
+import type {
+ Assertion,
+ ErrorRecord,
+ ImageRecord,
+ SimpleSuiteDetails,
+ Tag,
+} from './test-entity-related';
import type { specNode } from './test-run-records';
export default interface BasicDetails {
@@ -34,12 +40,15 @@ export interface ParsedSuiteRecord extends BasicDetails, SimpleSuiteDetails {
entityVersion: string;
simplified: string;
hooks: number;
+ Tags: Tag[];
}
export interface ParsedTestRecord extends BasicDetails, SimpleSuiteDetails {
isBroken: boolean;
errors: ErrorRecord[];
error: ErrorRecord;
+ Images: ImageRecord[];
+ Assertions: Assertion[];
}
export type SuiteDetails = { '@order': string[] } & Record<
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/records-in-detailed.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/records-in-detailed.ts
index 6746b833..5598610e 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/records-in-detailed.ts
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/records-in-detailed.ts
@@ -26,7 +26,6 @@ export default interface DetailedPageProperties {
export interface ValuesInDetailedContext {
detailsOfTestRun: DetailedTestRecord;
- images: ImageRecord[];
suites: SuiteDetails;
tests: TestDetails;
retriedRecords: ParsedRetriedRecords;
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/records-in-overview.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/records-in-overview.ts
index d28cea5d..fb31e60d 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/records-in-overview.ts
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/records-in-overview.ts
@@ -12,6 +12,7 @@ export interface OverallAggResults {
parentSuites: number;
files: number;
sessionCount: number;
+ isRecent: boolean;
imageCount: number;
brokenTests: number;
}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/test-entity-related.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/test-entity-related.ts
index 668fc272..b88d729c 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/test-entity-related.ts
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/test-entity-related.ts
@@ -82,5 +82,14 @@ export interface ImageRecord {
export interface ErrorRecord {
message: string;
stack: string;
- mailedFrom: string[];
+ mailedFrom?: string[];
+}
+
+export interface Assertion {
+ entity_id: string;
+ passed: boolean;
+ wait: number;
+ interval: number;
+ message: string;
+ title: string;
}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/ui-constants.ts b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/ui-constants.ts
index 9a9f2a27..84f52941 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/ui-constants.ts
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/src/types/ui-constants.ts
@@ -1,6 +1,5 @@
-export const timelineTab = 'timelineTab';
+import { TEXT } from 'handshake-utils';
-export const summaryTab = 'summary';
export const configTab = 'config';
export const menuTabs = {
@@ -12,5 +11,7 @@ export const menuTabs = {
},
};
-export const sourceUrl = 'https://github.com/RahulARanger/handshake';
+export const sourceUrl = TEXT.REPO;
export const attachmentPrefix = '/Attachments';
+
+export const showOnly = 'show-only'; // has user-select: 'none'
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.json b/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.json
index 80341ca9..ac95b317 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.json
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.json
@@ -1,26 +1,8 @@
{
+ "extends": "handshake-utils/tsconfig.ui.json",
"compilerOptions": {
"baseUrl": ".",
- "target": "ESNext",
- "lib": ["dom", "dom.iterable", "esnext"],
- "allowJs": true,
- "skipLibCheck": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "noEmit": true,
- "esModuleInterop": true,
- "module": "esnext",
- "moduleResolution": "node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "jsx": "preserve",
- "incremental": true,
- "plugins": [
- {
- "name": "next"
- }
- ]
},
- "include": ["next-env.d.ts", "./src", ".next/types/**/*.ts"],
- "exclude": ["node_modules", "results", ".next"]
+ "include": ["./next-env.d.ts", "./src", "./next/types/**/*.ts"],
+ "exclude": ["./node_modules", "./results", "./next"],
}
diff --git a/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.node.json b/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.node.json
index 0b36154a..05f2e846 100644
--- a/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.node.json
+++ b/handshake-nodejs-reporters/packages/handshake-dashboard/tsconfig.node.json
@@ -1,9 +1,3 @@
{
- "compilerOptions": {
- "strictNullChecks": true,
- "module": "NodeNext",
- "jsx": "react",
- "esModuleInterop": true
- },
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"]
+ "extends": "handshake-utils/tsconfig.node-allow-jsx.json"
}
diff --git a/handshake-nodejs-reporters/packages/handshake-utils/CHANGELOG.md b/handshake-nodejs-reporters/packages/handshake-utils/CHANGELOG.md
new file mode 100644
index 00000000..8a1d1a78
--- /dev/null
+++ b/handshake-nodejs-reporters/packages/handshake-utils/CHANGELOG.md
@@ -0,0 +1,8 @@
+# handshake-utils
+
+## 0.4.1
+
+### Patch Changes
+
+- fad015f: remodeled ui screens for the detailed test entity
+- 836f2c4: bump dependencies
diff --git a/handshake-nodejs-reporters/packages/handshake-utils/index.ts b/handshake-nodejs-reporters/packages/handshake-utils/index.ts
new file mode 100644
index 00000000..f4a52a54
--- /dev/null
+++ b/handshake-nodejs-reporters/packages/handshake-utils/index.ts
@@ -0,0 +1,51 @@
+export const LOCATORS = {
+ RUNS: {
+ testRuns: "test-runs",
+ testRunName: "test-run-name-",
+ testRunStatus: "test-run-status-",
+ latestRun: "latest-run",
+ today: "today",
+ yesterday: "yesterday",
+ thisWeek: "this-week",
+ forThisMonth: "for-this-month",
+ prevMonth: "prev-month",
+ statusForTestEntity: "status",
+ projectNameDropdown: 'project-name-dropdown',
+ dateRangeSelector: 'dateRange-selector',
+ githubURL: 'github-repo',
+ testRunsCard: "test-runs-card",
+ testRunsSwitch: 'switch-for-test-runs-plot'
+ },
+ DAYS: {
+ duration: 'duration-text',
+ relativeToRange: "relativeTo"
+ },
+ CHARTS: {
+ rate: "stacked-rate",
+ progress: "progress-pie-chart"
+ },
+ OVERVIEW:{
+ total: "total",
+ testEntitySwitch: "test-entity-switch",
+ recentRunBadge: "recent-run-badge"
+ }
+
+};
+
+export const TEXT = {
+ applicationName: "🫱🏾🫲🏼 Handshake",
+ RUNS: {
+ greet: "Your Test Runs",
+ description: "It lists your Tests Runs",
+ noteForTime: "Time Range & Duration (in s)"
+ },
+ OVERVIEW: {
+ greet: "In Summary",
+ description: "This page would show the summary of the test run"
+ },
+ AUTHOR: "RahulARanger",
+ dateFormatUsed: "ddd, MMM Do YYYY",
+ timeFormatUsed: "HH:mm:ss A",
+ dateTimeFormatUsed: "ddd, MMM Do YYYY hh:mm A",
+ REPO: "https://github.com/RahulARanger/handshake",
+};
diff --git a/handshake-nodejs-reporters/packages/handshake-utils/package.json b/handshake-nodejs-reporters/packages/handshake-utils/package.json
new file mode 100644
index 00000000..93027db9
--- /dev/null
+++ b/handshake-nodejs-reporters/packages/handshake-utils/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "handshake-utils",
+ "version": "0.4.1",
+ "description": "util required for the handshake packages, internally used",
+ "main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "types": "./dist/index.d.mts",
+ "type": "commonjs",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "build": "rimraf -g ./dist && tsup index.ts --format esm,cjs --dts"
+ },
+ "keywords": [
+ "internal",
+ "eslint",
+ "tsconfig",
+ "handshake"
+ ],
+ "peerDependencies": {
+ "eslint": ">= 3"
+ },
+ "author": "RahulARanger ",
+ "license": "MIT",
+ "dependencies": {
+ "@tsconfig/node20": "^20.1.2",
+ "@types/react": "18.2.48",
+ "@types/react-dom": "18.2.18",
+ "cross-env": "^7.0.3",
+ "tslib": "^2.6.2",
+ "typescript": "^5.3.3"
+ }
+}
diff --git a/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.json b/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.json
new file mode 100644
index 00000000..d7ae03dd
--- /dev/null
+++ b/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "extends": "./tsconfig.pure.node.json"
+}
\ No newline at end of file
diff --git a/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.node-allow-jsx.json b/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.node-allow-jsx.json
new file mode 100644
index 00000000..4e66f159
--- /dev/null
+++ b/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.node-allow-jsx.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.pure.node.json",
+ "compilerOptions": {
+ "strictNullChecks": true,
+ "module": "NodeNext",
+ "jsx": "react",
+ "esModuleInterop": true
+ }
+}
diff --git a/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.pure.node.json b/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.pure.node.json
new file mode 100644
index 00000000..7cbb3910
--- /dev/null
+++ b/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.pure.node.json
@@ -0,0 +1,20 @@
+{
+ "extends": "@tsconfig/node20/tsconfig.json",
+ "compilerOptions": {
+ "strict": true,
+ "declaration": true,
+ "declarationMap": true,
+ "resolveJsonModule": true,
+ "removeComments": true,
+ "strictFunctionTypes": false,
+ "experimentalDecorators": true,
+ "esModuleInterop": true,
+ "moduleResolution": "Node",
+ "module": "ESNext",
+ "lib": ["dom", "es2021"],
+ "types": ["node"],
+ "composite": false,
+ "forceConsistentCasingInFileNames": true
+ },
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.ui.json b/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.ui.json
new file mode 100644
index 00000000..82313003
--- /dev/null
+++ b/handshake-nodejs-reporters/packages/handshake-utils/tsconfig.ui.json
@@ -0,0 +1,23 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/handshake-nodejs-reporters/packages/wdio-handshake-reporter/CHANGELOG.md b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/CHANGELOG.md
index 2a9f62f9..27302acf 100644
--- a/handshake-nodejs-reporters/packages/wdio-handshake-reporter/CHANGELOG.md
+++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/CHANGELOG.md
@@ -1,5 +1,26 @@
# wdio-graspit-reporter
+## 0.4.1
+
+### Patch Changes
+
+- fad015f: remodeled ui screens for the detailed test entity
+- 836f2c4: bump dependencies
+- Updated dependencies [fad015f]
+- Updated dependencies [836f2c4]
+ - common-handshakes@0.4.1
+
+## 0.4.0
+
+### Minor Changes
+
+- 9df34e4: reworked on ui for dashboard and added bulk api for attachments
+
+### Patch Changes
+
+- Updated dependencies [9df34e4]
+ - common-handshakes@0.4.0
+
## 0.3.7
### Patch Changes
diff --git a/handshake-nodejs-reporters/packages/wdio-handshake-reporter/package.json b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/package.json
index a9a500b0..20c000f4 100644
--- a/handshake-nodejs-reporters/packages/wdio-handshake-reporter/package.json
+++ b/handshake-nodejs-reporters/packages/wdio-handshake-reporter/package.json
@@ -1,6 +1,6 @@
{
"name": "wdio-handshake-reporter",
- "version": "0.3.7",
+ "version": "0.4.1",
"types": "./dist/index.d.ts",
"exports": {
"default": "./dist/index.js"
@@ -15,15 +15,15 @@
"build": "rimraf -g ./dist && tsup src/index.ts --format esm --dts"
},
"dependencies": {
- "@wdio/reporter": "^8.27.0",
- "@wdio/types": "^8.27.0",
+ "@wdio/reporter": "^8.29.1",
+ "@wdio/types": "^8.29.1",
"log4js": "^6.9.1",
"superagent": "^8.1.2",
- "common-handshakes": "0.3.7"
+ "common-handshakes": "0.4.1"
},
"devDependencies": {
"@types/async-lock": "^1.4.2",
- "@types/superagent": "^8.1.1",
- "@types/node": "^20.10.5"
+ "@types/superagent": "^8.1.3",
+ "@types/node": "^20.11.9"
}
}
diff --git a/handshake/services/CommandLine/core.py b/handshake/services/CommandLine/core.py
index eb935ea2..8a08ddda 100644
--- a/handshake/services/CommandLine/core.py
+++ b/handshake/services/CommandLine/core.py
@@ -125,7 +125,15 @@ def run_app(
short_help="serves generated report",
)
@argument("STATIC_PATH", nargs=1, required=False, type=Path(exists=True, dir_okay=True))
-def display(static_path: Union[str, P_Path] = "TestReports"):
+@option(
+ "-p",
+ "--port",
+ default=8000,
+ show_default=True,
+ help="Port for the reports to host in",
+ type=int,
+)
+def display(static_path: Union[str, P_Path] = "TestReports", port: int = 8000):
if static_path:
static_path = P_Path(static_path)
@@ -134,7 +142,7 @@ def display(static_path: Union[str, P_Path] = "TestReports"):
loader = AppLoader(factory=partial(feed_static_provider, static_path))
_app = loader.load()
- _app.prepare(host="127.0.0.1")
+ _app.prepare(host="127.0.0.1", port=port)
Sanic.serve(primary=_app, app_loader=loader)