From d7f69496842464ebca36fee1e2dcbd8641d153b0 Mon Sep 17 00:00:00 2001 From: shmck Date: Sun, 3 May 2020 14:48:30 -0700 Subject: [PATCH 1/4] add test fail component Signed-off-by: shmck --- web-app/src/components/TestFail/index.tsx | 21 +++++++++++++++++++++ web-app/stories/Checkbox.stories.tsx | 1 - web-app/stories/TestRunner.stories.tsx | 10 ++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 web-app/src/components/TestFail/index.tsx create mode 100644 web-app/stories/TestRunner.stories.tsx diff --git a/web-app/src/components/TestFail/index.tsx b/web-app/src/components/TestFail/index.tsx new file mode 100644 index 00000000..d82e2706 --- /dev/null +++ b/web-app/src/components/TestFail/index.tsx @@ -0,0 +1,21 @@ +import * as React from 'react' +import { Message } from '@alifd/next' + +interface Props { + title: string + description: string +} + +const styles = { + fail: { + margin: '1rem', + }, +} + +const TestFail = (props: Props) => ( + +

{props.description}

+
+) + +export default TestFail diff --git a/web-app/stories/Checkbox.stories.tsx b/web-app/stories/Checkbox.stories.tsx index c8c935ca..ae1d1431 100644 --- a/web-app/stories/Checkbox.stories.tsx +++ b/web-app/stories/Checkbox.stories.tsx @@ -1,6 +1,5 @@ import { storiesOf } from '@storybook/react' import React from 'react' -import { css, jsx } from '@emotion/core' import Checkbox from '../src/components/Checkbox' import SideBarDecorator from './utils/SideBarDecorator' diff --git a/web-app/stories/TestRunner.stories.tsx b/web-app/stories/TestRunner.stories.tsx new file mode 100644 index 00000000..1dbc4d95 --- /dev/null +++ b/web-app/stories/TestRunner.stories.tsx @@ -0,0 +1,10 @@ +import { withKnobs } from '@storybook/addon-knobs' +import { storiesOf } from '@storybook/react' +import React from 'react' +import SideBarDecorator from './utils/SideBarDecorator' +import TestFail from '../src/components/TestFail' + +storiesOf('Test', module) + .addDecorator(SideBarDecorator) + .addDecorator(withKnobs) + .add('Fail', () => ) From 0f8c72d3df1baab23517aa342287740a5dba8430 Mon Sep 17 00:00:00 2001 From: shmck Date: Sun, 3 May 2020 15:24:01 -0700 Subject: [PATCH 2/4] show fail message in ui Signed-off-by: shmck --- src/editor/commands.ts | 6 +++--- src/services/testRunner/formatOutput.ts | 2 +- src/services/testRunner/index.ts | 10 +++++++--- src/services/testRunner/output.ts | 2 -- src/{ => services}/webview/index.ts | 2 +- src/{ => services}/webview/render.ts | 2 +- typings/index.d.ts | 6 ++++++ web-app/src/components/ProcessMessages/TestMessage.tsx | 2 +- web-app/src/services/state/actions/testNotify.ts | 4 ++-- 9 files changed, 22 insertions(+), 14 deletions(-) rename src/{ => services}/webview/index.ts (98%) rename src/{ => services}/webview/render.ts (98%) diff --git a/src/editor/commands.ts b/src/editor/commands.ts index 19b96585..002b8211 100644 --- a/src/editor/commands.ts +++ b/src/editor/commands.ts @@ -3,7 +3,7 @@ import * as TT from 'typings/tutorial' import * as vscode from 'vscode' import createTestRunner from '../services/testRunner' import { setupActions } from '../actions/setupActions' -import createWebView from '../webview' +import createWebView from '../services/webview' import logger from '../services/logger' export const COMMANDS = { @@ -62,9 +62,9 @@ export const createCommands = ({ extensionPath, workspaceState }: CreateCommandP // send test pass message back to client webview.send({ type: 'TEST_PASS', payload: { position } }) }, - onFail: (position: T.Position, message: string) => { + onFail: (position: T.Position, failSummary: T.TestFail): void => { // send test fail message back to client with failure message - webview.send({ type: 'TEST_FAIL', payload: { position, message } }) + webview.send({ type: 'TEST_FAIL', payload: { position, fail: failSummary } }) }, onError: (position: T.Position) => { // TODO: send test error message back to client diff --git a/src/services/testRunner/formatOutput.ts b/src/services/testRunner/formatOutput.ts index 00a2d8dc..2f538df4 100644 --- a/src/services/testRunner/formatOutput.ts +++ b/src/services/testRunner/formatOutput.ts @@ -4,7 +4,7 @@ import { ParserOutput, Fail } from './parser' // export const formatSuccessOutput = (tap: ParserOutput): string => {} export const formatFailOutput = (tap: ParserOutput): string => { - let output = `FAILED TESTS\n` + let output = `FAILED TEST LOG\n` tap.failed.forEach((fail: Fail) => { const details = fail.details ? `\n${fail.details}\n` : '' const logs = fail.logs ? `\n${fail.logs.join('\n')}\n` : '' diff --git a/src/services/testRunner/index.ts b/src/services/testRunner/index.ts index 182abc5e..73dbf65c 100644 --- a/src/services/testRunner/index.ts +++ b/src/services/testRunner/index.ts @@ -10,7 +10,7 @@ import { formatFailOutput } from './formatOutput' interface Callbacks { onSuccess(position: T.Position): void - onFail(position: T.Position, message: string): void + onFail(position: T.Position, failSummary: T.TestFail): void onRun(position: T.Position): void onError(position: T.Position): void } @@ -56,8 +56,12 @@ const createTestRunner = (config: TT.TutorialTestRunnerConfig, callbacks: Callba if (stderr) { // FAIL also trigger stderr if (stdout && stdout.length && !tap.ok) { - const firstFailMessage = tap.failed[0].message - callbacks.onFail(position, firstFailMessage) + const firstFail = tap.failed[0] + const failSummary = { + title: firstFail.message || 'Test Failed', + description: firstFail.details || 'Unknown error', + } + callbacks.onFail(position, failSummary) const output = formatFailOutput(tap) displayOutput({ channel: failChannelName, text: output, show: true }) return diff --git a/src/services/testRunner/output.ts b/src/services/testRunner/output.ts index 916b6000..8badf39d 100644 --- a/src/services/testRunner/output.ts +++ b/src/services/testRunner/output.ts @@ -18,13 +18,11 @@ interface DisplayOutput { export const displayOutput = (params: DisplayOutput) => { const channel = getOutputChannel(params.channel) channel.clear() - channel.show(params.show || false) channel.append(params.text) } export const clearOutput = (channelName: string) => { const channel = getOutputChannel(channelName) - channel.show(false) channel.clear() channel.hide() } diff --git a/src/webview/index.ts b/src/services/webview/index.ts similarity index 98% rename from src/webview/index.ts rename to src/services/webview/index.ts index e6fd4a3e..bfd27ef9 100644 --- a/src/webview/index.ts +++ b/src/services/webview/index.ts @@ -1,7 +1,7 @@ import * as path from 'path' import { Action } from 'typings' import * as vscode from 'vscode' -import Channel from '../channel' +import Channel from '../../channel' import render from './render' interface ReactWebViewProps { diff --git a/src/webview/render.ts b/src/services/webview/render.ts similarity index 98% rename from src/webview/render.ts rename to src/services/webview/render.ts index 1bf5bf6a..63b2680f 100644 --- a/src/webview/render.ts +++ b/src/services/webview/render.ts @@ -1,7 +1,7 @@ import { JSDOM } from 'jsdom' import * as path from 'path' import * as vscode from 'vscode' -import onError from '../services/sentry/onError' +import onError from '../sentry/onError' const getNonce = (): string => { let text = '' diff --git a/typings/index.d.ts b/typings/index.d.ts index 78c3d501..a80e8e00 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -42,6 +42,7 @@ export interface TestStatus { type: 'success' | 'warning' | 'error' | 'loading' title: string content?: string + timeout?: number } export interface MachineContext { @@ -116,3 +117,8 @@ export interface ProcessEvent { description: string status: 'RUNNING' | 'SUCCESS' | 'FAIL' | 'ERROR' } + +export type TestFail = { + title: string + description: string +} diff --git a/web-app/src/components/ProcessMessages/TestMessage.tsx b/web-app/src/components/ProcessMessages/TestMessage.tsx index 57b7eb2e..0ffde832 100644 --- a/web-app/src/components/ProcessMessages/TestMessage.tsx +++ b/web-app/src/components/ProcessMessages/TestMessage.tsx @@ -5,7 +5,7 @@ import { css, jsx } from '@emotion/core' const durations = { success: 1000, - warning: 4500, + warning: 20000, error: 4500, loading: 300000, } diff --git a/web-app/src/services/state/actions/testNotify.ts b/web-app/src/services/state/actions/testNotify.ts index 5b509adc..c5f7bda3 100644 --- a/web-app/src/services/state/actions/testNotify.ts +++ b/web-app/src/services/state/actions/testNotify.ts @@ -20,8 +20,8 @@ const testActions: ActionFunctionMap = { testFail: assign({ testStatus: (context, event) => ({ type: 'warning', - title: 'Fail!', - content: event.payload.message, + title: event.payload.fail.title, + content: event.payload.fail.description, }), }), // @ts-ignore From b6b750fe3e91b240b8868ae04faf77aa1c3e4894 Mon Sep 17 00:00:00 2001 From: shmck Date: Sun, 3 May 2020 15:28:03 -0700 Subject: [PATCH 3/4] add test failure in webview changelog Signed-off-by: shmck --- CHANGELOG.md | 6 ++++++ docs/images/fail-message-in-webview.png | Bin 0 -> 99198 bytes 2 files changed, 6 insertions(+) create mode 100644 docs/images/fail-message-in-webview.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 79da8400..893ccf61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -101,3 +101,9 @@ Resulting in a folder structure like the following: - Continue an incomplete tutorial started in the same workspace. Choose the "continue" path from the start screen. Progress is stored in local storage in the workspace. ![continue tutorial](./docs/images/continue-tutorial.png) + +## [0.5.0] + +- Show error messages in the webview UI + +![fail message in webview](./docs/images/fail-message-in-webview.png) diff --git a/docs/images/fail-message-in-webview.png b/docs/images/fail-message-in-webview.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d5488ef8b2e20b79430693ff6af3297066780c GIT binary patch literal 99198 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�_$`PGOhI?&nt3gkMk8mjSjrX#{wAL`s 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%0D^iv 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 K8&rWGy!b!fWGfy3 literal 0 HcmV?d00001 From 623c7375855af8831e2430475309290048148b62 Mon Sep 17 00:00:00 2001 From: shmck Date: Sun, 3 May 2020 20:59:37 -0700 Subject: [PATCH 4/4] open logs from error message Signed-off-by: shmck --- src/channel/index.ts | 5 ++++- src/environment.ts | 2 +- src/services/testRunner/index.ts | 8 +++---- src/services/testRunner/output.ts | 9 ++++++-- web-app/src/components/Message/index.tsx | 6 +++++- .../ProcessMessages/TestMessage.tsx | 6 ++++-- .../src/components/ProcessMessages/index.tsx | 18 ++++++++++++++-- web-app/src/components/TestFail/index.tsx | 21 ------------------- .../containers/Tutorial/components/Level.tsx | 4 +++- web-app/src/containers/Tutorial/index.tsx | 5 +++++ web-app/src/services/state/actions/editor.ts | 20 +++++++++++------- web-app/src/services/state/machine.ts | 3 +++ web-app/stories/TestRunner.stories.tsx | 10 --------- 13 files changed, 65 insertions(+), 52 deletions(-) delete mode 100644 web-app/src/components/TestFail/index.tsx delete mode 100644 web-app/stories/TestRunner.stories.tsx diff --git a/src/channel/index.ts b/src/channel/index.ts index 07e4298f..fd7c09cf 100644 --- a/src/channel/index.ts +++ b/src/channel/index.ts @@ -14,6 +14,7 @@ import { openWorkspace, checkWorkspaceEmpty } from '../services/workspace' import { readFile } from 'fs' import { join } from 'path' import { promisify } from 'util' +import { showOutput } from '../services/testRunner/output' import { WORKSPACE_ROOT } from '../environment' const readFileAsync = promisify(readFile) @@ -300,7 +301,9 @@ class Channel implements Channel { // update progress when a level is deemed complete in the client await this.context.progress.syncProgress(action.payload.progress) return - + case 'EDITOR_OPEN_LOGS': + const channel = action.payload.channel + await showOutput(channel) default: logger(`No match for action type: ${actionType}`) return diff --git a/src/environment.ts b/src/environment.ts index 89a61125..6fd41f4d 100644 --- a/src/environment.ts +++ b/src/environment.ts @@ -10,7 +10,7 @@ export type Env = 'test' | 'local' | 'development' | 'production' export const NODE_ENV: Env = process.env.NODE_ENV || 'production' // toggle logging in development -export const LOG = false +export const LOG = true // error logging tool export const SENTRY_DSN: string | null = null diff --git a/src/services/testRunner/index.ts b/src/services/testRunner/index.ts index 73dbf65c..57cea72a 100644 --- a/src/services/testRunner/index.ts +++ b/src/services/testRunner/index.ts @@ -5,7 +5,7 @@ import logger from '../logger' import parser from './parser' import { debounce, throttle } from './throttle' import onError from '../sentry/onError' -import { clearOutput, displayOutput } from './output' +import { clearOutput, addOutput } from './output' import { formatFailOutput } from './formatOutput' interface Callbacks { @@ -51,7 +51,7 @@ const createTestRunner = (config: TT.TutorialTestRunnerConfig, callbacks: Callba const tap = parser(stdout || '') - displayOutput({ channel: logChannelName, text: tap.logs.join('\n'), show: false }) + addOutput({ channel: logChannelName, text: tap.logs.join('\n'), show: false }) if (stderr) { // FAIL also trigger stderr @@ -63,12 +63,12 @@ const createTestRunner = (config: TT.TutorialTestRunnerConfig, callbacks: Callba } callbacks.onFail(position, failSummary) const output = formatFailOutput(tap) - displayOutput({ channel: failChannelName, text: output, show: true }) + addOutput({ channel: failChannelName, text: output, show: true }) return } else { callbacks.onError(position) // open terminal with error string - displayOutput({ channel: failChannelName, text: stderr, show: true }) + addOutput({ channel: failChannelName, text: stderr, show: true }) return } } diff --git a/src/services/testRunner/output.ts b/src/services/testRunner/output.ts index 8badf39d..c390c9ba 100644 --- a/src/services/testRunner/output.ts +++ b/src/services/testRunner/output.ts @@ -9,18 +9,23 @@ const getOutputChannel = (name: string): vscode.OutputChannel => { return channels[name] } -interface DisplayOutput { +interface ChannelOutput { channel: string text: string show?: boolean } -export const displayOutput = (params: DisplayOutput) => { +export const addOutput = (params: ChannelOutput) => { const channel = getOutputChannel(params.channel) channel.clear() channel.append(params.text) } +export const showOutput = (channelName: string) => { + const channel = getOutputChannel(channelName) + channel.show() +} + export const clearOutput = (channelName: string) => { const channel = getOutputChannel(channelName) channel.clear() diff --git a/web-app/src/components/Message/index.tsx b/web-app/src/components/Message/index.tsx index c0f428d2..8d3ccc05 100644 --- a/web-app/src/components/Message/index.tsx +++ b/web-app/src/components/Message/index.tsx @@ -11,6 +11,7 @@ interface Props { closeable?: boolean onClose?: () => void handleClose?: () => void + children?: React.ReactElement | null } const Message = (props: Props) => { @@ -30,7 +31,10 @@ const Message = (props: Props) => { onClose={onClose} shape={props.shape} > - {props.content} +
+
{props.content}
+
{props.children}
+
) } diff --git a/web-app/src/components/ProcessMessages/TestMessage.tsx b/web-app/src/components/ProcessMessages/TestMessage.tsx index 0ffde832..2eebaa3e 100644 --- a/web-app/src/components/ProcessMessages/TestMessage.tsx +++ b/web-app/src/components/ProcessMessages/TestMessage.tsx @@ -24,7 +24,7 @@ const useTimeout = ({ duration, key }: { duration: number; key: string }) => { return timeoutClose } -const TestMessage = (props: T.TestStatus) => { +const TestMessage = (props: T.TestStatus & { children?: React.ReactElement | null }) => { const duration = durations[props.type] const timeoutClose = useTimeout({ duration, key: props.title }) return ( @@ -36,7 +36,9 @@ const TestMessage = (props: T.TestStatus) => { size="medium" closeable={props.type !== 'loading'} content={props.content} - /> + > + {props.children} + ) } diff --git a/web-app/src/components/ProcessMessages/index.tsx b/web-app/src/components/ProcessMessages/index.tsx index c1614c40..80334568 100644 --- a/web-app/src/components/ProcessMessages/index.tsx +++ b/web-app/src/components/ProcessMessages/index.tsx @@ -1,12 +1,14 @@ import Message from '../Message' import * as React from 'react' import * as T from 'typings' +import Button from '../Button' import { css, jsx } from '@emotion/core' import TestMessage from './TestMessage' interface Props { testStatus?: T.TestStatus | null processes: T.ProcessEvent[] + onOpenLogs?: (channel: string) => void } const styles = { @@ -17,9 +19,21 @@ const styles = { } // display a list of active processes -const ProcessMessages = ({ processes, testStatus }: Props) => { +const ProcessMessages = ({ processes, testStatus, onOpenLogs }: Props) => { if (testStatus) { - return + return ( + + {testStatus.type === 'warning' ? ( + + ) : null} + + ) } if (!processes.length) { return null diff --git a/web-app/src/components/TestFail/index.tsx b/web-app/src/components/TestFail/index.tsx deleted file mode 100644 index d82e2706..00000000 --- a/web-app/src/components/TestFail/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import * as React from 'react' -import { Message } from '@alifd/next' - -interface Props { - title: string - description: string -} - -const styles = { - fail: { - margin: '1rem', - }, -} - -const TestFail = (props: Props) => ( - -

{props.description}

-
-) - -export default TestFail diff --git a/web-app/src/containers/Tutorial/components/Level.tsx b/web-app/src/containers/Tutorial/components/Level.tsx index 38f7a8bd..2ee7a26b 100644 --- a/web-app/src/containers/Tutorial/components/Level.tsx +++ b/web-app/src/containers/Tutorial/components/Level.tsx @@ -96,6 +96,7 @@ interface Props { testStatus: T.TestStatus | null onContinue(): void onLoadSolution(): void + onOpenLogs(channel: string): void } const Level = ({ @@ -107,6 +108,7 @@ const Level = ({ status, onContinue, onLoadSolution, + onOpenLogs, processes, testStatus, }: Props) => { @@ -170,7 +172,7 @@ const Level = ({ {(testStatus || processes.length > 0) && (
- +
)} diff --git a/web-app/src/containers/Tutorial/index.tsx b/web-app/src/containers/Tutorial/index.tsx index 4c04f660..c0dd156f 100644 --- a/web-app/src/containers/Tutorial/index.tsx +++ b/web-app/src/containers/Tutorial/index.tsx @@ -32,6 +32,10 @@ const TutorialPage = (props: PageProps) => { props.send({ type: 'STEP_SOLUTION_LOAD' }) } + const onOpenLogs = (channel: string): void => { + props.send({ type: 'OPEN_LOGS', payload: { channel } }) + } + const steps = levelData.steps.map((step: TT.Step) => { // label step status for step component let status: T.ProgressStatus = 'INCOMPLETE' @@ -61,6 +65,7 @@ const TutorialPage = (props: PageProps) => { status={progress.levels[position.levelId] ? 'COMPLETE' : 'ACTIVE'} onContinue={onContinue} onLoadSolution={onLoadSolution} + onOpenLogs={onOpenLogs} processes={processes} testStatus={testStatus} /> diff --git a/web-app/src/services/state/actions/editor.ts b/web-app/src/services/state/actions/editor.ts index e3121018..da0f2e97 100644 --- a/web-app/src/services/state/actions/editor.ts +++ b/web-app/src/services/state/actions/editor.ts @@ -1,4 +1,4 @@ -import * as CR from 'typings' +import * as T from 'typings' import * as TT from 'typings/tutorial' import * as selectors from '../../selectors' @@ -8,7 +8,7 @@ export default (editorSend: any) => ({ type: 'EDITOR_STARTUP', }) }, - configureNewTutorial(context: CR.MachineContext) { + configureNewTutorial(context: T.MachineContext) { editorSend({ type: 'EDITOR_TUTORIAL_CONFIG', payload: { @@ -17,7 +17,7 @@ export default (editorSend: any) => ({ }, }) }, - continueConfig(context: CR.MachineContext) { + continueConfig(context: T.MachineContext) { editorSend({ type: 'EDITOR_TUTORIAL_CONTINUE_CONFIG', payload: { @@ -26,7 +26,7 @@ export default (editorSend: any) => ({ }, }) }, - loadLevel(context: CR.MachineContext): void { + loadLevel(context: T.MachineContext): void { const level: TT.Level = selectors.currentLevel(context) const step: TT.Step | null = selectors.currentStep(context) // load step actions @@ -41,7 +41,7 @@ export default (editorSend: any) => ({ }, }) }, - loadStep(context: CR.MachineContext): void { + loadStep(context: T.MachineContext): void { const step: TT.Step | null = selectors.currentStep(context) if (step && step.setup) { // load step actions @@ -58,7 +58,7 @@ export default (editorSend: any) => ({ }) } }, - editorLoadSolution(context: CR.MachineContext): void { + editorLoadSolution(context: T.MachineContext): void { const step: TT.Step | null = selectors.currentStep(context) // tell editor to load solution commit if (step && step.solution) { @@ -74,7 +74,7 @@ export default (editorSend: any) => ({ }) } }, - syncLevelProgress(context: CR.MachineContext): void { + syncLevelProgress(context: T.MachineContext): void { editorSend({ type: 'EDITOR_SYNC_PROGRESS', payload: { @@ -95,4 +95,10 @@ export default (editorSend: any) => ({ type: 'EDITOR_REQUEST_WORKSPACE', }) }, + editorOpenLogs(context: T.MachineContext, event: T.MachineEvent): void { + editorSend({ + type: 'EDITOR_OPEN_LOGS', + payload: { channel: event.payload.channel }, + }) + }, }) diff --git a/web-app/src/services/state/machine.ts b/web-app/src/services/state/machine.ts index 8b91d813..ccf7589a 100644 --- a/web-app/src/services/state/machine.ts +++ b/web-app/src/services/state/machine.ts @@ -170,6 +170,9 @@ export const createMachine = (options: any) => { STEP_SOLUTION_LOAD: { actions: ['editorLoadSolution'], }, + OPEN_LOGS: { + actions: ['editorOpenLogs'], + }, }, }, TestRunning: { diff --git a/web-app/stories/TestRunner.stories.tsx b/web-app/stories/TestRunner.stories.tsx deleted file mode 100644 index 1dbc4d95..00000000 --- a/web-app/stories/TestRunner.stories.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { withKnobs } from '@storybook/addon-knobs' -import { storiesOf } from '@storybook/react' -import React from 'react' -import SideBarDecorator from './utils/SideBarDecorator' -import TestFail from '../src/components/TestFail' - -storiesOf('Test', module) - .addDecorator(SideBarDecorator) - .addDecorator(withKnobs) - .add('Fail', () => )