}) {
const { assertion, context } = options;
assert(assertion, 'assertion should be a string');
@@ -272,6 +271,7 @@ export async function AiAssert<
type: 'image_url',
image_url: {
url: screenshotBase64,
+ detail: 'high',
},
},
{
diff --git a/packages/midscene/src/ai-model/openai/index.ts b/packages/midscene/src/ai-model/openai/index.ts
index 69ffd7c80..af5a8ed98 100644
--- a/packages/midscene/src/ai-model/openai/index.ts
+++ b/packages/midscene/src/ai-model/openai/index.ts
@@ -118,6 +118,7 @@ async function createChatClient({
endpoint: getAIConfig(AZURE_OPENAI_ENDPOINT),
apiVersion: getAIConfig(AZURE_OPENAI_API_VERSION),
deployment: getAIConfig(AZURE_OPENAI_DEPLOYMENT),
+ dangerouslyAllowBrowser: true,
...extraConfig,
...extraAzureConfig,
});
diff --git a/packages/midscene/src/insight/index.ts b/packages/midscene/src/insight/index.ts
index 495199455..9c3d9c175 100644
--- a/packages/midscene/src/insight/index.ts
+++ b/packages/midscene/src/insight/index.ts
@@ -208,7 +208,7 @@ export default class Insight<
let errorLog: string | undefined;
if (parseResult.errors?.length) {
- errorLog = `segment - AI response error: \n${parseResult.errors.join('\n')}`;
+ errorLog = `AI response error: \n${parseResult.errors.join('\n')}`;
}
const dumpData: PartialInsightDumpFromSDK = {
@@ -225,12 +225,12 @@ export default class Insight<
};
const logId = writeInsightDump(dumpData, undefined, dumpSubscriber);
- if (errorLog) {
+ const { data } = parseResult;
+ if (errorLog && !data) {
console.error(errorLog);
throw new Error(errorLog);
}
- const { data } = parseResult;
let mergedData = data;
// expand elements in object style data
diff --git a/packages/visualizer/modern.config.ts b/packages/visualizer/modern.config.ts
index ac3188f8d..a96cccb79 100644
--- a/packages/visualizer/modern.config.ts
+++ b/packages/visualizer/modern.config.ts
@@ -2,7 +2,7 @@ import path from 'node:path';
import { defineConfig, moduleTools } from '@modern-js/module-tools';
import { modulePluginNodePolyfill } from '@modern-js/plugin-module-node-polyfill';
import { version } from './package.json';
-const externals = ['playwright'];
+const externals = ['playwright', 'bufferutil', 'utf-8-validate'];
const commonConfig = {
asset: {
@@ -17,8 +17,7 @@ const commonConfig = {
}
: undefined,
define: {
- __VERSION__: JSON.stringify(version),
- global: 'globalThis',
+ __VERSION__: version,
},
};
diff --git a/packages/visualizer/package.json b/packages/visualizer/package.json
index e5cc32bb6..8cc0a3994 100644
--- a/packages/visualizer/package.json
+++ b/packages/visualizer/package.json
@@ -56,5 +56,8 @@
"sideEffects": ["**/*.css", "**/*.less", "**/*.sass", "**/*.scss"],
"publishConfig": {
"access": "public"
+ },
+ "dependencies": {
+ "buffer": "6.0.3"
}
}
diff --git a/packages/visualizer/src/component/common.less b/packages/visualizer/src/component/common.less
index e1b64474f..7d2d02e4c 100644
--- a/packages/visualizer/src/component/common.less
+++ b/packages/visualizer/src/component/common.less
@@ -11,8 +11,9 @@
@selected-bg: #bfc4da80;
@hover-bg: #dcdcdc80;
-@weak-text: #777;
@weak-bg: #F3F3F3;
+@weak-text: #777;
+@footer-text: #CCC;
@toolbar-btn-bg: #E9E9E9;
@@ -23,4 +24,4 @@
@layout-extension-space-horizontal: 20px;
-@layout-extension-space-vertical: 30px;
+@layout-extension-space-vertical: 20px;
diff --git a/packages/visualizer/src/component/env-config.tsx b/packages/visualizer/src/component/env-config.tsx
index 22a59249f..c43d9c33a 100644
--- a/packages/visualizer/src/component/env-config.tsx
+++ b/packages/visualizer/src/component/env-config.tsx
@@ -8,6 +8,7 @@ export function EnvConfig() {
const [isModalOpen, setIsModalOpen] = useState(false);
const [tempConfigString, setTempConfigString] = useState(configString);
+ const popupTab = useEnvConfig((state) => state.popupTab);
const showModal = (e: React.MouseEvent) => {
setIsModalOpen(true);
e.preventDefault();
@@ -36,9 +37,9 @@ export function EnvConfig() {
{iconForStatus('failed')} No config