-
clearChat()}>
+ handleSelectChange("builds")}
+ >
+ {/*
+
+
+
+
+
+
+
+
+
+ Clear Builds
+
+
+
+
+
+ Clear Builds & Session
+
+
+
+ */}
{chatHistory?.length > 0 ? (
diff --git a/src/frontend/src/modals/IOModal/index.tsx b/src/frontend/src/modals/IOModal/index.tsx
index e956c5262..ace9930f3 100644
--- a/src/frontend/src/modals/IOModal/index.tsx
+++ b/src/frontend/src/modals/IOModal/index.tsx
@@ -24,6 +24,7 @@ import { cn } from "../../utils/utils";
import BaseModal from "../baseModal";
import IOFieldView from "./components/IOFieldView";
import ChatView from "./components/chatView";
+import { getSessions } from "../../controllers/API";
export default function IOModal({
children,
@@ -77,6 +78,7 @@ export default function IOModal({
const isBuilding = useFlowStore((state) => state.isBuilding);
const currentFlow = useFlowsManagerStore((state) => state.currentFlow);
const setNode = useFlowStore((state) => state.setNode);
+ const [sessions, setSessions] = useState([]);
async function updateVertices() {
return updateVerticesOrder(currentFlow!.id, null);
@@ -113,6 +115,11 @@ export default function IOModal({
useEffect(() => {
setSelectedViewField(startView());
+ // if (haveChat) {
+ // getSessions().then((sessions) => {
+ // setSessions(sessions);
+ // });
+ // }
}, [open]);
return (
@@ -161,6 +168,9 @@ export default function IOModal({
{outputs.length > 0 && (
Outputs
)}
+ {/* {haveChat && (
+ History
+ )} */}
diff --git a/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx b/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx
index e51403acb..a19ee6a28 100644
--- a/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx
+++ b/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx
@@ -9,7 +9,7 @@ export default function getPythonApiCode(
flowId: string,
isAuth: boolean,
tweaksBuildedObject,
- endpointName?: string
+ endpointName?: string,
): string {
const tweaksObject = tweaksBuildedObject[0];
return `import argparse
diff --git a/src/frontend/src/modals/apiModal/views/index.tsx b/src/frontend/src/modals/apiModal/views/index.tsx
index f7a72082c..a26cd62d1 100644
--- a/src/frontend/src/modals/apiModal/views/index.tsx
+++ b/src/frontend/src/modals/apiModal/views/index.tsx
@@ -35,7 +35,7 @@ const ApiModal = forwardRef(
flow: FlowType;
children: ReactNode;
},
- ref
+ ref,
) => {
const tweak = useTweaksStore((state) => state.tweak);
const addTweaks = useTweaksStore((state) => state.setTweak);
@@ -50,18 +50,18 @@ const ApiModal = forwardRef(
flow?.id,
autoLogin,
tweak,
- flow?.endpoint_name
+ flow?.endpoint_name,
);
const curl_run_code = getCurlRunCode(
flow?.id,
autoLogin,
tweak,
- flow?.endpoint_name
+ flow?.endpoint_name,
);
const curl_webhook_code = getCurlWebhookCode(
flow?.id,
autoLogin,
- flow?.endpoint_name
+ flow?.endpoint_name,
);
const pythonCode = getPythonCode(flow?.name, tweak);
const widgetCode = getWidgetCode(flow?.id, flow?.name, autoLogin);
@@ -77,7 +77,7 @@ const ApiModal = forwardRef(
pythonCode,
];
const [tabs, setTabs] = useState(
- createTabsArray(codesArray, includeWebhook)
+ createTabsArray(codesArray, includeWebhook),
);
const canShowTweaks =
@@ -126,7 +126,7 @@ const ApiModal = forwardRef(
buildTweakObject(
nodeId,
element.data.node.template[templateField].value,
- element.data.node.template[templateField]
+ element.data.node.template[templateField],
);
}
});
@@ -143,7 +143,7 @@ const ApiModal = forwardRef(
async function buildTweakObject(
tw: string,
changes: string | string[] | boolean | number | Object[] | Object,
- template: TemplateVariableType
+ template: TemplateVariableType,
) {
changes = getChangesType(changes, template);
@@ -185,7 +185,7 @@ const ApiModal = forwardRef(
flow?.id,
autoLogin,
cloneTweak,
- flow?.endpoint_name
+ flow?.endpoint_name,
);
const pythonCode = getPythonCode(flow?.name, cloneTweak);
const widgetCode = getWidgetCode(flow?.id, flow?.name, autoLogin);
@@ -229,7 +229,7 @@ const ApiModal = forwardRef(
);
- }
+ },
);
export default ApiModal;
diff --git a/src/frontend/src/modals/editNodeModal/index.tsx b/src/frontend/src/modals/editNodeModal/index.tsx
index 519dba852..252237ef8 100644
--- a/src/frontend/src/modals/editNodeModal/index.tsx
+++ b/src/frontend/src/modals/editNodeModal/index.tsx
@@ -52,7 +52,7 @@ const EditNodeModal = forwardRef(
setOpen: (open: boolean) => void;
data: NodeDataType;
},
- ref
+ ref,
) => {
const nodes = useFlowStore((state) => state.nodes);
@@ -134,7 +134,7 @@ const EditNodeModal = forwardRef(
"edit-node-modal-box",
nodeLength > limitScrollFieldsModal
? "overflow-scroll overflow-x-hidden custom-scroll"
- : ""
+ : "",
)}
>
{nodeLength > 0 && (
@@ -157,8 +157,8 @@ const EditNodeModal = forwardRef(
templateParam.charAt(0) !== "_" &&
myData.node?.template[templateParam].show &&
LANGFLOW_SUPPORTED_TYPES.has(
- myData.node!.template[templateParam].type
- )
+ myData.node!.template[templateParam].type,
+ ),
)
.map((templateParam, index) => {
let id = {
@@ -180,8 +180,8 @@ const EditNodeModal = forwardRef(
myData.node?.template[templateParam]
.proxy,
}
- : id
- )
+ : id,
+ ),
) ?? false;
return (
@@ -263,7 +263,7 @@ const EditNodeModal = forwardRef(
onChange={(value: string[]) => {
handleOnNewValue(
value,
- templateParam
+ templateParam,
);
}}
/>
@@ -287,11 +287,11 @@ const EditNodeModal = forwardRef(
.value ?? ""
}
onChange={(
- value: string | string[]
+ value: string | string[],
) => {
handleOnNewValue(
value,
- templateParam
+ templateParam,
);
}}
/>
@@ -341,7 +341,7 @@ const EditNodeModal = forwardRef(
].value = newValue;
handleOnNewValue(
newValue,
- templateParam
+ templateParam,
);
}}
id="editnode-div-dict-input"
@@ -358,7 +358,7 @@ const EditNodeModal = forwardRef(
myData.node!.template[templateParam].value
?.length > 1
? "my-3"
- : ""
+ : "",
)}
>
{
handleOnNewValue(
isEnabled,
- templateParam
+ templateParam,
);
}}
size="small"
@@ -643,7 +643,7 @@ const EditNodeModal = forwardRef(
);
- }
+ },
);
export default EditNodeModal;
diff --git a/src/frontend/src/modals/flowLogsModal/index.tsx b/src/frontend/src/modals/flowLogsModal/index.tsx
index d7c9625b7..6928b6021 100644
--- a/src/frontend/src/modals/flowLogsModal/index.tsx
+++ b/src/frontend/src/modals/flowLogsModal/index.tsx
@@ -33,11 +33,13 @@ export default function FlowLogsModal({
setRows(rows);
});
} else if (activeTab === "Messages") {
- getMessagesTable(currentFlowId, "union").then((data) => {
- const { columns, rows } = data;
- setColumns(columns.map((col) => ({ ...col, editable: true })));
- setRows(rows);
- });
+ getMessagesTable("union", currentFlowId, ["index", "flow_id"]).then(
+ (data) => {
+ const { columns, rows } = data;
+ setColumns(columns.map((col) => ({ ...col, editable: true })));
+ setRows(rows);
+ },
+ );
}
if (open && activeTab === "Messages" && !noticed.current) {
diff --git a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx
index bbd5573cb..e3bef9114 100644
--- a/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx
+++ b/src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx
@@ -58,7 +58,7 @@ export default function NodeToolbarComponent({
data.node.template[templateField].type === "Any" ||
data.node.template[templateField].type === "int" ||
data.node.template[templateField].type === "dict" ||
- data.node.template[templateField].type === "NestedDict")
+ data.node.template[templateField].type === "NestedDict"),
).length;
const templates = useTypesStore((state) => state.templates);
const hasStore = useStoreStore((state) => state.hasStore);
@@ -85,7 +85,7 @@ export default function NodeToolbarComponent({
const [showconfirmShare, setShowconfirmShare] = useState(false);
const [showOverrideModal, setShowOverrideModal] = useState(false);
const [flowComponent, setFlowComponent] = useState(
- createFlowComponent(cloneDeep(data), version)
+ createFlowComponent(cloneDeep(data), version),
);
const openInNewTab = (url) => {
@@ -100,7 +100,7 @@ export default function NodeToolbarComponent({
const updateNodeInternals = useUpdateNodeInternals();
const setLastCopiedSelection = useFlowStore(
- (state) => state.setLastCopiedSelection
+ (state) => state.setLastCopiedSelection,
);
const setSuccessData = useAlertStore((state) => state.setSuccessData);
@@ -153,7 +153,7 @@ export default function NodeToolbarComponent({
nodes,
edges,
setNodes,
- setEdges
+ setEdges,
);
break;
case "override":
@@ -177,7 +177,7 @@ export default function NodeToolbarComponent({
y: 10,
paneX: nodes.find((node) => node.id === data.id)?.position.x,
paneY: nodes.find((node) => node.id === data.id)?.position.y,
- }
+ },
);
break;
case "update":
@@ -215,13 +215,13 @@ export default function NodeToolbarComponent({
};
const isSaved = flows.some((flow) =>
- Object.values(flow).includes(data.node?.display_name!)
+ Object.values(flow).includes(data.node?.display_name!),
);
const setNode = useFlowStore((state) => state.setNode);
const handleOnNewValue = (
- newValue: string | string[] | boolean | Object[]
+ newValue: string | string[] | boolean | Object[],
): void => {
if (data.node!.template[name].value !== newValue) {
takeSnapshot();
@@ -408,7 +408,7 @@ export default function NodeToolbarComponent({
data-testid="save-button-modal"
className={classNames(
"relative -ml-px inline-flex items-center bg-background px-2 py-2 text-foreground shadow-md ring-1 ring-inset ring-ring transition-all duration-500 ease-in-out hover:bg-muted focus:z-10",
- hasCode ? " " : " rounded-l-md "
+ hasCode ? " " : " rounded-l-md ",
)}
onClick={(event) => {
event.preventDefault();
@@ -426,7 +426,7 @@ export default function NodeToolbarComponent({
{
event.preventDefault();
@@ -440,7 +440,7 @@ export default function NodeToolbarComponent({
{
event.preventDefault();
@@ -461,7 +461,7 @@ export default function NodeToolbarComponent({
className={cn(
"h-4 w-4 transition-all",
// TODO UPDATE THIS COLOR TO BE A VARIABLE
- frozen ? "animate-wiggle text-ice" : ""
+ frozen ? "animate-wiggle text-ice" : "",
)}
/>
@@ -474,7 +474,7 @@ export default function NodeToolbarComponent({
),
},
+ {
+ title: "Messages",
+ href: "/settings/messages",
+ icon: (
+
+ ),
+ },
];
return (
| ColGroupDef)[]>([
{
- headerCheckboxSelection: true,
- checkboxSelection: true,
- showDisabledCheckboxes: true,
headerName: "Variable Name",
field: "name",
flex: 2,
diff --git a/src/frontend/src/pages/SettingsPage/pages/hooks/use-patch-gradient.tsx b/src/frontend/src/pages/SettingsPage/pages/hooks/use-patch-gradient.tsx
index 9adb923a7..ea61d4722 100644
--- a/src/frontend/src/pages/SettingsPage/pages/hooks/use-patch-gradient.tsx
+++ b/src/frontend/src/pages/SettingsPage/pages/hooks/use-patch-gradient.tsx
@@ -9,7 +9,7 @@ const usePatchGradient = (
setSuccessData,
setErrorData,
currentUserData,
- setUserData
+ setUserData,
) => {
const handlePatchGradient = async (gradient) => {
try {
diff --git a/src/frontend/src/pages/SettingsPage/pages/hooks/use-save-key.tsx b/src/frontend/src/pages/SettingsPage/pages/hooks/use-save-key.tsx
index bdd105fef..cf5871a26 100644
--- a/src/frontend/src/pages/SettingsPage/pages/hooks/use-save-key.tsx
+++ b/src/frontend/src/pages/SettingsPage/pages/hooks/use-save-key.tsx
@@ -11,7 +11,7 @@ const useSaveKey = (
setErrorData,
setHasApiKey,
setValidApiKey,
- setLoadingApiKey
+ setLoadingApiKey,
) => {
const { storeApiKey } = useContext(AuthContext);
@@ -35,7 +35,7 @@ const useSaveKey = (
setHasApiKey(false);
setValidApiKey(false);
setLoadingApiKey(false);
- }
+ },
);
}
};
diff --git a/src/frontend/src/pages/SettingsPage/pages/messagesPage/components/headerMessages/index.tsx b/src/frontend/src/pages/SettingsPage/pages/messagesPage/components/headerMessages/index.tsx
new file mode 100644
index 000000000..fc88edbf7
--- /dev/null
+++ b/src/frontend/src/pages/SettingsPage/pages/messagesPage/components/headerMessages/index.tsx
@@ -0,0 +1,49 @@
+import ForwardedIconComponent from "../../../../../../components/genericIconComponent";
+import { Button } from "../../../../../../components/ui/button";
+import { cn } from "../../../../../../utils/utils";
+
+type HeaderMessagesComponentProps = {
+ selectedRows: number[];
+ handleRemoveMessages: () => void;
+};
+const HeaderMessagesComponent = ({
+ selectedRows,
+ handleRemoveMessages,
+}: HeaderMessagesComponentProps) => {
+ return (
+ <>
+
+
+
+ Messages
+
+
+
+ Inspect, edit and remove messages to explore and refine model
+ behaviors.
+
+
+
+
+
+
+
+
+ >
+ );
+};
+export default HeaderMessagesComponent;
diff --git a/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-messages-table.tsx b/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-messages-table.tsx
new file mode 100644
index 000000000..7f3a74352
--- /dev/null
+++ b/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-messages-table.tsx
@@ -0,0 +1,24 @@
+import { useEffect } from "react";
+import { getMessagesTable } from "../../../../../controllers/API";
+import { useMessagesStore } from "../../../../../stores/messagesStore";
+
+const useMessagesTable = (setColumns) => {
+ const setMessages = useMessagesStore((state) => state.setMessages);
+ useEffect(() => {
+ const fetchData = async () => {
+ try {
+ const data = await getMessagesTable("union", undefined, ["index"]);
+ const { columns, rows } = data;
+ setColumns(columns);
+ setMessages(rows);
+ } catch (error) {
+ console.error("Error fetching messages:", error);
+ }
+ };
+ fetchData();
+ }, []);
+
+ return null;
+};
+
+export default useMessagesTable;
diff --git a/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-remove-messages.tsx b/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-remove-messages.tsx
new file mode 100644
index 000000000..d7f4d5202
--- /dev/null
+++ b/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-remove-messages.tsx
@@ -0,0 +1,30 @@
+import { deleteMessagesFn } from "../../../../../controllers/API";
+import { useMessagesStore } from "../../../../../stores/messagesStore";
+
+const useRemoveMessages = (
+ setSelectedRows,
+ setSuccessData,
+ setErrorData,
+ selectedRows,
+) => {
+ const deleteMessages = useMessagesStore((state) => state.removeMessages);
+
+ const handleRemoveMessages = async () => {
+ try {
+ await deleteMessagesFn(selectedRows);
+ deleteMessages(selectedRows);
+ setSelectedRows([]);
+ setSuccessData({
+ title: "Messages deleted successfully.",
+ });
+ } catch (error) {
+ setErrorData({
+ title: "Error deleting messages.",
+ });
+ }
+ };
+
+ return { handleRemoveMessages };
+};
+
+export default useRemoveMessages;
diff --git a/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-updateMessage.tsx b/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-updateMessage.tsx
new file mode 100644
index 000000000..7165a3cc5
--- /dev/null
+++ b/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-updateMessage.tsx
@@ -0,0 +1,29 @@
+import { useMessagesStore } from "../../../../../stores/messagesStore";
+import { Message } from "../../../../../types/messages";
+import { updateMessageApi } from "../../../../../controllers/API";
+
+const useUpdateMessage = (setSuccessData, setErrorData) => {
+ const updateMessage = useMessagesStore((state) => state.updateMessage);
+
+ const handleUpdate = async (data: Message) => {
+ try {
+ await updateMessageApi(data);
+
+ updateMessage(data);
+
+ // Set success message
+ setSuccessData({
+ title: "Messages updated successfully.",
+ });
+ } catch (error) {
+ // Set error message
+ setErrorData({
+ title: "Error updating messages.",
+ });
+ }
+ };
+
+ return { handleUpdate };
+};
+
+export default useUpdateMessage;
diff --git a/src/frontend/src/pages/SettingsPage/pages/messagesPage/index.tsx b/src/frontend/src/pages/SettingsPage/pages/messagesPage/index.tsx
new file mode 100644
index 000000000..dac957d9a
--- /dev/null
+++ b/src/frontend/src/pages/SettingsPage/pages/messagesPage/index.tsx
@@ -0,0 +1,81 @@
+import {
+ CellEditRequestEvent,
+ ColDef,
+ ColGroupDef,
+ SelectionChangedEvent,
+} from "ag-grid-community";
+import { useState } from "react";
+import TableComponent from "../../../../components/tableComponent";
+import { Card, CardContent } from "../../../../components/ui/card";
+import useAlertStore from "../../../../stores/alertStore";
+import { useMessagesStore } from "../../../../stores/messagesStore";
+import HeaderMessagesComponent from "./components/headerMessages";
+import useMessagesTable from "./hooks/use-messages-table";
+import useRemoveMessages from "./hooks/use-remove-messages";
+import useUpdateMessage from "./hooks/use-updateMessage";
+
+export default function MessagesPage() {
+ const [columns, setColumns] = useState>([]);
+ const messages = useMessagesStore((state) => state.messages);
+
+ const setErrorData = useAlertStore((state) => state.setErrorData);
+ const setSuccessData = useAlertStore((state) => state.setSuccessData);
+
+ const [selectedRows, setSelectedRows] = useState([]);
+
+ const { handleRemoveMessages } = useRemoveMessages(
+ setSelectedRows,
+ setSuccessData,
+ setErrorData,
+ selectedRows,
+ );
+
+ const { handleUpdate } = useUpdateMessage(setSuccessData, setErrorData);
+
+ useMessagesTable(setColumns);
+
+ function handleUpdateMessage(event: CellEditRequestEvent) {
+ const newValue = event.newValue;
+ const field = event.column.getColId();
+ const row = event.data;
+ const data = {
+ ...row,
+ [field]: newValue,
+ };
+ handleUpdate(data);
+ }
+
+ return (
+
+
+
+
+
+
+ {
+ handleUpdateMessage(event);
+ }}
+ editable={["Sender Name", "Message"]}
+ overlayNoRowsTemplate="No data available"
+ onSelectionChanged={(event: SelectionChangedEvent) => {
+ setSelectedRows(
+ event.api.getSelectedRows().map((row) => row.index),
+ );
+ }}
+ rowSelection="multiple"
+ suppressRowClickSelection={true}
+ pagination={true}
+ columnDefs={columns}
+ rowData={messages}
+ />
+
+
+
+
+ );
+}
diff --git a/src/frontend/src/routes.tsx b/src/frontend/src/routes.tsx
index 25f63082b..44697b73a 100644
--- a/src/frontend/src/routes.tsx
+++ b/src/frontend/src/routes.tsx
@@ -6,6 +6,7 @@ import { ProtectedLoginRoute } from "./components/authLoginGuard";
import { CatchAllRoute } from "./components/catchAllRoutes";
import LoadingComponent from "./components/loadingComponent";
import { StoreGuard } from "./components/storeGuard";
+import MessagesPage from "./pages/SettingsPage/pages/messagesPage";
const AdminPage = lazy(() => import("./pages/AdminPage"));
const LoginAdminPage = lazy(() => import("./pages/AdminPage/LoginPage"));
@@ -78,6 +79,7 @@ const Router = () => {
} />
} />
} />
+ } />
((set, get) => ({
+ messages: [],
+ setMessages: (messages) => {
+ set(() => ({ messages: messages }));
+ },
+ addMessage: (message) => {
+ set(() => ({ messages: [...get().messages, message] }));
+ },
+ removeMessage: (message) => {
+ set(() => ({
+ messages: get().messages.filter((msg) => msg.id !== message.id),
+ }));
+ },
+ updateMessage: (message) => {
+ set(() => ({
+ messages: get().messages.map((msg) =>
+ msg.index === message.index ? message : msg,
+ ),
+ }));
+ },
+ clearMessages: () => {
+ set(() => ({ messages: [] }));
+ },
+ removeMessages: (ids) => {
+ return new Promise((resolve, reject) => {
+ try {
+ set((state) => {
+ const updatedMessages = state.messages.filter(
+ (msg) => !ids.includes(msg.index),
+ );
+ get().setMessages(updatedMessages);
+ resolve(updatedMessages);
+ return { messages: updatedMessages };
+ });
+ } catch (error) {
+ reject(error);
+ }
+ });
+ },
+}));
diff --git a/src/frontend/src/style/classes.css b/src/frontend/src/style/classes.css
index 39b080390..29140e7fa 100644
--- a/src/frontend/src/style/classes.css
+++ b/src/frontend/src/style/classes.css
@@ -15,6 +15,10 @@ pre {
font-family: inherit;
}
+.ag-paging-page-size {
+ display: none;
+}
+
.react-flow__pane {
cursor: default;
}
diff --git a/src/frontend/src/types/components/index.ts b/src/frontend/src/types/components/index.ts
index 199cbb1f2..daec3023f 100644
--- a/src/frontend/src/types/components/index.ts
+++ b/src/frontend/src/types/components/index.ts
@@ -756,3 +756,17 @@ export type toolbarSelectItemProps = {
dataTestId: string;
ping?: boolean;
};
+
+export type clearChatPropsType = {
+ lockChat: boolean;
+ setLockChat: (lock: boolean) => void;
+ setChatHistory: (chatHistory: ChatMessageType) => void;
+ method: string;
+};
+
+export type handleSelectPropsType = {
+ event: string;
+ lockChat: boolean;
+ setLockChat: (lock: boolean) => void;
+ setChatHistory: (chatHistory: ChatMessageType) => void;
+};
diff --git a/src/frontend/src/types/messages/index.ts b/src/frontend/src/types/messages/index.ts
new file mode 100644
index 000000000..738e16258
--- /dev/null
+++ b/src/frontend/src/types/messages/index.ts
@@ -0,0 +1,13 @@
+type Message = {
+ artifacts: Record;
+ flow_id: string;
+ index: number;
+ message: string;
+ sender: string;
+ sender_name: string;
+ session_id: string;
+ timestamp: string;
+ id: string;
+};
+
+export type { Message };
diff --git a/src/frontend/src/types/zustand/flow/index.ts b/src/frontend/src/types/zustand/flow/index.ts
index bbb68d1c9..1d90bac62 100644
--- a/src/frontend/src/types/zustand/flow/index.ts
+++ b/src/frontend/src/types/zustand/flow/index.ts
@@ -48,8 +48,16 @@ export type FlowStoreType = {
onFlowPage: boolean;
setOnFlowPage: (onFlowPage: boolean) => void;
flowPool: FlowPoolType;
- inputs: Array<{ type: string; id: string; displayName: string }>;
- outputs: Array<{ type: string; id: string; displayName: string }>;
+ inputs: Array<{
+ type: string;
+ id: string;
+ displayName: string;
+ }>;
+ outputs: Array<{
+ type: string;
+ id: string;
+ displayName: string;
+ }>;
hasIO: boolean;
setFlowPool: (flowPool: FlowPoolType) => void;
addDataToFlowPool: (data: FlowPoolObjectType, nodeId: string) => void;
diff --git a/src/frontend/src/types/zustand/messages/index.ts b/src/frontend/src/types/zustand/messages/index.ts
new file mode 100644
index 000000000..44915d2c3
--- /dev/null
+++ b/src/frontend/src/types/zustand/messages/index.ts
@@ -0,0 +1,11 @@
+import { Message } from "../../messages";
+
+export type MessagesStoreType = {
+ messages: Message[];
+ setMessages: (messages: Message[]) => void;
+ addMessage: (message: Message) => void;
+ removeMessage: (message: Message) => void;
+ updateMessage: (message: Message) => void;
+ clearMessages: () => void;
+ removeMessages: (ids: number[]) => void;
+};
diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts
index d1f960017..37b71ea15 100644
--- a/src/frontend/src/utils/reactflowUtils.ts
+++ b/src/frontend/src/utils/reactflowUtils.ts
@@ -99,18 +99,18 @@ export function unselectAllNodes({ updateNodes, data }: unselectAllNodesType) {
export function isValidConnection(
{ source, target, sourceHandle, targetHandle }: Connection,
nodes: Node[],
- edges: Edge[]
+ edges: Edge[],
) {
const targetHandleObject: targetHandleType = scapeJSONParse(targetHandle!);
const sourceHandleObject: sourceHandleType = scapeJSONParse(sourceHandle!);
if (
targetHandleObject.inputTypes?.some(
- (n) => n === sourceHandleObject.dataType
+ (n) => n === sourceHandleObject.dataType,
) ||
sourceHandleObject.baseClasses.some(
(t) =>
targetHandleObject.inputTypes?.some((n) => n === t) ||
- t === targetHandleObject.type
+ t === targetHandleObject.type,
)
) {
let targetNode = nodes.find((node) => node.id === target!)?.data?.node;
@@ -143,7 +143,7 @@ export function removeApiKeys(flow: FlowType): FlowType {
export function updateTemplate(
reference: APITemplateType,
- objectToUpdate: APITemplateType
+ objectToUpdate: APITemplateType,
): APITemplateType {
let clonedObject: APITemplateType = cloneDeep(reference);
@@ -203,7 +203,7 @@ export const processDataFromFlow = (flow: FlowType, refreshIds = true) => {
export function updateIds(
{ edges, nodes }: { edges: Edge[]; nodes: Node[] },
- selection?: { edges: Edge[]; nodes: Node[] }
+ selection?: { edges: Edge[]; nodes: Node[] },
) {
let idsMap = {};
const selectionIds = selection?.nodes.map((n) => n.id);
@@ -231,7 +231,7 @@ export function updateIds(
edge.source = idsMap[edge.source];
edge.target = idsMap[edge.target];
const sourceHandleObject: sourceHandleType = scapeJSONParse(
- edge.sourceHandle!
+ edge.sourceHandle!,
);
edge.sourceHandle = scapedJSONStringfy({
...sourceHandleObject,
@@ -241,7 +241,7 @@ export function updateIds(
edge.data.sourceHandle.id = edge.source;
}
const targetHandleObject: targetHandleType = scapeJSONParse(
- edge.targetHandle!
+ edge.targetHandle!,
);
edge.targetHandle = scapedJSONStringfy({
...targetHandleObject,
@@ -287,11 +287,11 @@ export function validateNode(node: NodeType, edges: Edge[]): Array {
(scapeJSONParse(edge.targetHandle!) as targetHandleType).fieldName ===
t &&
(scapeJSONParse(edge.targetHandle!) as targetHandleType).id ===
- node.id
+ node.id,
)
) {
errors.push(
- `${displayName || type} is missing ${getFieldTitle(template, t)}.`
+ `${displayName || type} is missing ${getFieldTitle(template, t)}.`,
);
} else if (
template[t].type === "dict" &&
@@ -305,15 +305,15 @@ export function validateNode(node: NodeType, edges: Edge[]): Array {
errors.push(
`${displayName || type} (${getFieldTitle(
template,
- t
- )}) contains duplicate keys with the same values.`
+ t,
+ )}) contains duplicate keys with the same values.`,
);
if (hasEmptyKey(template[t].value))
errors.push(
`${displayName || type} (${getFieldTitle(
template,
- t
- )}) field must not be empty.`
+ t,
+ )}) field must not be empty.`,
);
}
return errors;
@@ -322,7 +322,7 @@ export function validateNode(node: NodeType, edges: Edge[]): Array {
export function validateNodes(
nodes: Node[],
- edges: Edge[]
+ edges: Edge[],
): // this returns an array of tuples with the node id and the errors
Array<{ id: string; errors: Array }> {
if (nodes.length === 0) {
@@ -343,7 +343,7 @@ export function updateEdges(edges: Edge[]) {
if (edges)
edges.forEach((edge) => {
const targetHandleObject: targetHandleType = scapeJSONParse(
- edge.targetHandle!
+ edge.targetHandle!,
);
edge.className = "stroke-gray-900 stroke-connection";
});
@@ -410,7 +410,7 @@ export function handleKeyDown(
| React.KeyboardEvent
| React.KeyboardEvent,
inputValue: string | string[] | null,
- block: string
+ block: string,
) {
//condition to fix bug control+backspace on Windows/Linux
if (
@@ -435,7 +435,7 @@ export function handleKeyDown(
}
export function handleOnlyIntegerInput(
- event: React.KeyboardEvent
+ event: React.KeyboardEvent,
) {
if (
event.key === "." ||
@@ -451,7 +451,7 @@ export function handleOnlyIntegerInput(
export function getConnectedNodes(
edge: Edge,
- nodes: Array
+ nodes: Array,
): Array {
const sourceId = edge.source;
const targetId = edge.target;
@@ -552,7 +552,7 @@ export function checkOldEdgesHandles(edges: Edge[]): boolean {
!edge.sourceHandle ||
!edge.targetHandle ||
!edge.sourceHandle.includes("{") ||
- !edge.targetHandle.includes("{")
+ !edge.targetHandle.includes("{"),
);
}
@@ -575,7 +575,7 @@ export function customStringify(obj: any): string {
const keys = Object.keys(obj).sort();
const keyValuePairs = keys.map(
- (key) => `"${key}":${customStringify(obj[key])}`
+ (key) => `"${key}":${customStringify(obj[key])}`,
);
return `{${keyValuePairs.join(",")}}`;
}
@@ -604,7 +604,7 @@ export function getHandleId(
source: string,
sourceHandle: string,
target: string,
- targetHandle: string
+ targetHandle: string,
) {
return (
"reactflow__edge-" + source + sourceHandle + "-" + target + targetHandle
@@ -615,7 +615,7 @@ export function generateFlow(
selection: OnSelectionChangeParams,
nodes: Node[],
edges: Edge[],
- name: string
+ name: string,
): generateFlowType {
const newFlowData = { nodes, edges, viewport: { zoom: 1, x: 0, y: 0 } };
const uid = new ShortUniqueId({ length: 5 });
@@ -624,7 +624,7 @@ export function generateFlow(
newFlowData.edges = selection.edges.filter(
(edge) =>
selection.nodes.some((node) => node.id === edge.target) &&
- selection.nodes.some((node) => node.id === edge.source)
+ selection.nodes.some((node) => node.id === edge.source),
);
newFlowData.nodes = selection.nodes;
@@ -645,7 +645,7 @@ export function generateFlow(
(edge) =>
(selection.nodes.some((node) => node.id === edge.target) ||
selection.nodes.some((node) => node.id === edge.source)) &&
- newFlowData.edges.every((e) => e.id !== edge.id)
+ newFlowData.edges.every((e) => e.id !== edge.id),
),
};
}
@@ -656,13 +656,13 @@ export function reconnectEdges(groupNode: NodeType, excludedEdges: Edge[]) {
const { nodes, edges } = groupNode.data.node!.flow!.data!;
const lastNode = findLastNode(groupNode.data.node!.flow!.data!);
newEdges = newEdges.filter(
- (e) => !(nodes.some((n) => n.id === e.source) && e.source !== lastNode?.id)
+ (e) => !(nodes.some((n) => n.id === e.source) && e.source !== lastNode?.id),
);
newEdges.forEach((edge) => {
if (lastNode && edge.source === lastNode.id) {
edge.source = groupNode.id;
let newSourceHandle: sourceHandleType = scapeJSONParse(
- edge.sourceHandle!
+ edge.sourceHandle!,
);
newSourceHandle.id = groupNode.id;
edge.sourceHandle = scapedJSONStringfy(newSourceHandle);
@@ -689,7 +689,7 @@ export function reconnectEdges(groupNode: NodeType, excludedEdges: Edge[]) {
export function filterFlow(
selection: OnSelectionChangeParams,
setNodes: (update: Node[] | ((oldState: Node[]) => Node[])) => void,
- setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void
+ setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void,
) {
setNodes((nodes) => nodes.filter((node) => !selection.nodes.includes(node)));
setEdges((edges) => edges.filter((edge) => !selection.edges.includes(edge)));
@@ -727,7 +727,7 @@ export function updateFlowPosition(NewPosition: XYPosition, flow: FlowType) {
export function concatFlows(
flow: FlowType,
setNodes: (update: Node[] | ((oldState: Node[]) => Node[])) => void,
- setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void
+ setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void,
) {
const { nodes, edges } = flow.data!;
setNodes((old) => [...old, ...nodes]);
@@ -736,7 +736,7 @@ export function concatFlows(
export function validateSelection(
selection: OnSelectionChangeParams,
- edges: Edge[]
+ edges: Edge[],
): Array {
const clonedSelection = cloneDeep(selection);
const clonedEdges = cloneDeep(edges);
@@ -750,7 +750,7 @@ export function validateSelection(
let nodesSet = new Set(clonedSelection.nodes.map((n) => n.id));
// then filter the edges that are connected to the nodes in the set
let connectedEdges = clonedSelection.edges.filter(
- (e) => nodesSet.has(e.source) && nodesSet.has(e.target)
+ (e) => nodesSet.has(e.source) && nodesSet.has(e.target),
);
// add the edges to the selection
clonedSelection.edges = connectedEdges;
@@ -764,17 +764,17 @@ export function validateSelection(
clonedSelection.nodes.some(
(node) =>
isInputNode(node.data as NodeDataType) ||
- isOutputNode(node.data as NodeDataType)
+ isOutputNode(node.data as NodeDataType),
)
) {
errorsArray.push(
- "Please select only nodes that are not input or output nodes"
+ "Please select only nodes that are not input or output nodes",
);
}
//check if there are two or more nodes with free outputs
if (
clonedSelection.nodes.filter(
- (n) => !clonedSelection.edges.some((e) => e.source === n.id)
+ (n) => !clonedSelection.edges.some((e) => e.source === n.id),
).length > 1
) {
errorsArray.push("Please select only one node with free outputs");
@@ -785,7 +785,7 @@ export function validateSelection(
clonedSelection.nodes.some(
(node) =>
!clonedSelection.edges.some((edge) => edge.target === node.id) &&
- !clonedSelection.edges.some((edge) => edge.source === node.id)
+ !clonedSelection.edges.some((edge) => edge.source === node.id),
)
) {
errorsArray.push("Please select only nodes that are connected");
@@ -842,8 +842,8 @@ export function mergeNodeTemplates({
nodeTemplate[key].display_name
? nodeTemplate[key].display_name
: nodeTemplate[key].name
- ? toTitleCase(nodeTemplate[key].name)
- : toTitleCase(key);
+ ? toTitleCase(nodeTemplate[key].name)
+ : toTitleCase(key);
}
}
});
@@ -854,7 +854,7 @@ function isHandleConnected(
edges: Edge[],
key: string,
field: TemplateVariableType,
- nodeId: string
+ nodeId: string,
) {
/*
this function receives a flow and a handleId and check if there is a connection with this handle
@@ -870,7 +870,7 @@ function isHandleConnected(
id: nodeId,
proxy: { id: field.proxy!.id, field: field.proxy!.field },
inputTypes: field.input_types,
- } as targetHandleType)
+ } as targetHandleType),
)
) {
return true;
@@ -885,7 +885,7 @@ function isHandleConnected(
fieldName: key,
id: nodeId,
inputTypes: field.input_types,
- } as targetHandleType)
+ } as targetHandleType),
)
) {
return true;
@@ -908,7 +908,7 @@ export function generateNodeTemplate(Flow: FlowType) {
export function generateNodeFromFlow(
flow: FlowType,
- getNodeId: (type: string) => string
+ getNodeId: (type: string) => string,
): NodeType {
const { nodes } = flow.data!;
const outputNode = cloneDeep(findLastNode(flow.data!));
@@ -939,7 +939,7 @@ export function generateNodeFromFlow(
export function connectedInputNodesOnHandle(
nodeId: string,
handleId: string,
- { nodes, edges }: { nodes: NodeType[]; edges: Edge[] }
+ { nodes, edges }: { nodes: NodeType[]; edges: Edge[] },
) {
const connectedNodes: Array<{ name: string; id: string; isGroup: boolean }> =
[];
@@ -976,7 +976,7 @@ export function connectedInputNodesOnHandle(
export function updateProxyIdsOnTemplate(
template: APITemplateType,
- idsMap: { [key: string]: string }
+ idsMap: { [key: string]: string },
) {
Object.keys(template).forEach((key) => {
if (template[key].proxy && idsMap[template[key].proxy!.id]) {
@@ -987,7 +987,7 @@ export function updateProxyIdsOnTemplate(
export function updateEdgesIds(
edges: Edge[],
- idsMap: { [key: string]: string }
+ idsMap: { [key: string]: string },
) {
edges.forEach((edge) => {
let targetHandle: targetHandleType = edge.data.targetHandle;
@@ -1019,7 +1019,7 @@ export function expandGroupNode(
nodes: Node[],
edges: Edge[],
setNodes: (update: Node[] | ((oldState: Node[]) => Node[])) => void,
- setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void
+ setEdges: (update: Edge[] | ((oldState: Edge[]) => Edge[])) => void,
) {
const idsMap = updateIds(flow!.data!);
updateProxyIdsOnTemplate(template, idsMap);
@@ -1062,7 +1062,7 @@ export function expandGroupNode(
const lastNode = cloneDeep(findLastNode(flow!.data!));
newEdge.source = lastNode!.id;
let newSourceHandle: sourceHandleType = scapeJSONParse(
- newEdge.sourceHandle!
+ newEdge.sourceHandle!,
);
newSourceHandle.id = lastNode!.id;
newEdge.data.sourceHandle = newSourceHandle;
@@ -1119,7 +1119,7 @@ export function expandGroupNode(
export function getGroupStatus(
flow: FlowType,
- ssData: { [key: string]: { valid: boolean; params: string } }
+ ssData: { [key: string]: { valid: boolean; params: string } },
) {
let status = { valid: true, params: SUCCESS_BUILD };
const { nodes } = flow.data!;
@@ -1138,7 +1138,7 @@ export function getGroupStatus(
export function createFlowComponent(
nodeData: NodeDataType,
- version: string
+ version: string,
): FlowType {
const flowNode: FlowType = {
data: {
@@ -1174,7 +1174,7 @@ export function downloadNode(NodeFLow: FlowType) {
export function updateComponentNameAndType(
data: any,
- component: NodeDataType
+ component: NodeDataType,
) {}
export function removeFileNameFromComponents(flow: FlowType) {
@@ -1248,7 +1248,7 @@ export function extractFieldsFromComponenents(data: APIObjectType) {
export function downloadFlow(
flow: FlowType,
flowName: string,
- flowDescription?: string
+ flowDescription?: string,
) {
let clonedFlow = cloneDeep(flow);
removeFileNameFromComponents(clonedFlow);
@@ -1258,7 +1258,7 @@ export function downloadFlow(
...clonedFlow,
name: flowName,
description: flowDescription,
- })
+ }),
)}`;
// create a link element and set its properties
@@ -1273,7 +1273,7 @@ export function downloadFlow(
export function downloadFlows() {
downloadFlowsFromDatabase().then((flows) => {
const jsonString = `data:text/json;chatset=utf-8,${encodeURIComponent(
- JSON.stringify(flows)
+ JSON.stringify(flows),
)}`;
// create a link element and set its properties
@@ -1297,7 +1297,7 @@ export function getRandomDescription(): string {
export const createNewFlow = (
flowData: ReactFlowJsonObject,
flow: FlowType,
- folderId: string
+ folderId: string,
) => {
return {
description: flow?.description ?? getRandomDescription(),
diff --git a/src/frontend/src/utils/storeUtils.ts b/src/frontend/src/utils/storeUtils.ts
index 9c2735a35..c8391b211 100644
--- a/src/frontend/src/utils/storeUtils.ts
+++ b/src/frontend/src/utils/storeUtils.ts
@@ -21,8 +21,16 @@ export default function cloneFLowWithParent(
}
export function getInputsAndOutputs(nodes: Node[]) {
- let inputs: { type: string; id: string; displayName: string }[] = [];
- let outputs: { type: string; id: string; displayName: string }[] = [];
+ let inputs: {
+ type: string;
+ id: string;
+ displayName: string;
+ }[] = [];
+ let outputs: {
+ type: string;
+ id: string;
+ displayName: string;
+ }[] = [];
nodes.forEach((node) => {
const nodeData: NodeDataType = node.data as NodeDataType;
if (isOutputNode(nodeData)) {
diff --git a/src/frontend/src/utils/styleUtils.ts b/src/frontend/src/utils/styleUtils.ts
index c73ec5d23..b1b6a6f25 100644
--- a/src/frontend/src/utils/styleUtils.ts
+++ b/src/frontend/src/utils/styleUtils.ts
@@ -143,6 +143,8 @@ import {
X,
XCircle,
Zap,
+ RotateCcw,
+ Settings,
} from "lucide-react";
import { FaApple, FaDiscord, FaGithub } from "react-icons/fa";
import { AWSIcon } from "../icons/AWS";
@@ -526,4 +528,6 @@ export const nodeIconsLucide: iconsType = {
FolderPlusIcon,
FolderIcon,
Discord: FaDiscord,
+ RotateCcw,
+ Settings,
};
diff --git a/src/frontend/src/utils/utils.ts b/src/frontend/src/utils/utils.ts
index 8544afacc..4e8d930a6 100644
--- a/src/frontend/src/utils/utils.ts
+++ b/src/frontend/src/utils/utils.ts
@@ -352,8 +352,9 @@ export function isTimeStampString(str: string): boolean {
export function extractColumnsFromRows(
rows: object[],
mode: "intersection" | "union",
+ excludeColumns?: Array,
): (ColDef | ColGroupDef)[] {
- const columnsKeys: { [key: string]: ColDef | ColGroupDef } = {};
+ let columnsKeys: { [key: string]: ColDef | ColGroupDef } = {};
if (rows.length === 0) {
return [];
}
@@ -393,5 +394,11 @@ export function extractColumnsFromRows(
union();
}
+ if (excludeColumns) {
+ for (const key of excludeColumns) {
+ delete columnsKeys[key];
+ }
+ }
+
return Object.values(columnsKeys);
}
diff --git a/src/frontend/tests/end-to-end/chatInputOutput.spec.ts b/src/frontend/tests/end-to-end/chatInputOutput.spec.ts
index a1429ddec..66044f25f 100644
--- a/src/frontend/tests/end-to-end/chatInputOutput.spec.ts
+++ b/src/frontend/tests/end-to-end/chatInputOutput.spec.ts
@@ -24,7 +24,7 @@ test("chat_io_teste", async ({ page }) => {
const jsonContent = readFileSync(
"src/frontend/tests/end-to-end/assets/ChatTest.json",
- "utf-8"
+ "utf-8",
);
await page.getByTestId("blank-flow").click();
@@ -47,7 +47,7 @@ test("chat_io_teste", async ({ page }) => {
"drop",
{
dataTransfer,
- }
+ },
);
await page.getByLabel("fit view").click();
await page.getByText("Playground", { exact: true }).click();
diff --git a/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts b/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts
index 4c6b90081..8a3d6cf39 100644
--- a/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts
+++ b/src/frontend/tests/end-to-end/chatInputOutputUser.spec.ts
@@ -57,7 +57,7 @@ test("user must interact with chat with Input/Output", async ({ page }) => {
.getByTestId("textarea-input_value")
.nth(1)
.fill(
- "testtesttesttesttesttestte;.;.,;,.;,.;.,;,..,;;;;;;;;;;;;;;;;;;;;;,;.;,.;,.,;.,;.;.,~~çççççççççççççççççççççççççççççççççççççççisdajfdasiopjfaodisjhvoicxjiovjcxizopjviopasjioasfhjaiohf23432432432423423sttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestççççççççççççççççççççççççççççççççç,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,!"
+ "testtesttesttesttesttestte;.;.,;,.;,.;.,;,..,;;;;;;;;;;;;;;;;;;;;;,;.;,.;,.,;.,;.;.,~~çççççççççççççççççççççççççççççççççççççççisdajfdasiopjfaodisjhvoicxjiovjcxizopjviopasjioasfhjaiohf23432432432423423sttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestççççççççççççççççççççççççççççççççç,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,!",
);
await page.getByTestId("icon-LucideSend").click();
await page.getByText("Close", { exact: true }).click();
@@ -88,8 +88,8 @@ test("user must interact with chat with Input/Output", async ({ page }) => {
await page
.getByText(
"testtesttesttesttesttestte;.;.,;,.;,.;.,;,..,;;;;;;;;;;;;;;;;;;;;;,;.;,.;,.,;.,;.;.,~~çççççççççççççççççççççççççççççççççççççççisdajfdasiopjfaodisjhvoicxjiovjcxizopjviopasjioasfhjaiohf23432432432423423sttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttestççççççççççççççççççççççççççççççççç,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,!",
- { exact: true }
+ { exact: true },
)
- .isVisible()
+ .isVisible(),
);
});
diff --git a/src/frontend/tests/end-to-end/dragAndDrop.spec.ts b/src/frontend/tests/end-to-end/dragAndDrop.spec.ts
index 3e760901d..03d11aaf7 100644
--- a/src/frontend/tests/end-to-end/dragAndDrop.spec.ts
+++ b/src/frontend/tests/end-to-end/dragAndDrop.spec.ts
@@ -27,7 +27,7 @@ test.describe("drag and drop test", () => {
// Read your file into a buffer.
const jsonContent = readFileSync(
"src/frontend/tests/end-to-end/assets/collection.json",
- "utf-8"
+ "utf-8",
);
// Create the DataTransfer and File
@@ -47,7 +47,7 @@ test.describe("drag and drop test", () => {
"drop",
{
dataTransfer,
- }
+ },
);
const genericNoda = page.getByTestId("div-generic-node");
diff --git a/src/frontend/tests/end-to-end/dropdownComponent.spec.ts b/src/frontend/tests/end-to-end/dropdownComponent.spec.ts
index 70c1b4a64..b5ff9ef00 100644
--- a/src/frontend/tests/end-to-end/dropdownComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/dropdownComponent.spec.ts
@@ -78,32 +78,32 @@ test("dropDownComponent", async ({ page }) => {
await page.locator('//*[@id="showcredentials_profile_name"]').click();
expect(
- await page.locator('//*[@id="showcredentials_profile_name"]').isChecked()
+ await page.locator('//*[@id="showcredentials_profile_name"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showcredentials_profile_name"]').click();
expect(
- await page.locator('//*[@id="showcredentials_profile_name"]').isChecked()
+ await page.locator('//*[@id="showcredentials_profile_name"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showendpoint_url"]').click();
expect(
- await page.locator('//*[@id="showendpoint_url"]').isChecked()
+ await page.locator('//*[@id="showendpoint_url"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showendpoint_url"]').click();
expect(
- await page.locator('//*[@id="showendpoint_url"]').isChecked()
+ await page.locator('//*[@id="showendpoint_url"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showregion_name"]').click();
expect(
- await page.locator('//*[@id="showregion_name"]').isChecked()
+ await page.locator('//*[@id="showregion_name"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showregion_name"]').click();
expect(
- await page.locator('//*[@id="showregion_name"]').isChecked()
+ await page.locator('//*[@id="showregion_name"]').isChecked(),
).toBeTruthy();
// showmodel_id
@@ -113,7 +113,7 @@ test("dropDownComponent", async ({ page }) => {
// showmodel_id
await page.locator('//*[@id="showmodel_id"]').click();
expect(
- await page.locator('//*[@id="showmodel_id"]').isChecked()
+ await page.locator('//*[@id="showmodel_id"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showcache"]').click();
@@ -124,32 +124,32 @@ test("dropDownComponent", async ({ page }) => {
await page.locator('//*[@id="showcredentials_profile_name"]').click();
expect(
- await page.locator('//*[@id="showcredentials_profile_name"]').isChecked()
+ await page.locator('//*[@id="showcredentials_profile_name"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showcredentials_profile_name"]').click();
expect(
- await page.locator('//*[@id="showcredentials_profile_name"]').isChecked()
+ await page.locator('//*[@id="showcredentials_profile_name"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showendpoint_url"]').click();
expect(
- await page.locator('//*[@id="showendpoint_url"]').isChecked()
+ await page.locator('//*[@id="showendpoint_url"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showendpoint_url"]').click();
expect(
- await page.locator('//*[@id="showendpoint_url"]').isChecked()
+ await page.locator('//*[@id="showendpoint_url"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showregion_name"]').click();
expect(
- await page.locator('//*[@id="showregion_name"]').isChecked()
+ await page.locator('//*[@id="showregion_name"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showregion_name"]').click();
expect(
- await page.locator('//*[@id="showregion_name"]').isChecked()
+ await page.locator('//*[@id="showregion_name"]').isChecked(),
).toBeTruthy();
// showmodel_id
@@ -159,7 +159,7 @@ test("dropDownComponent", async ({ page }) => {
// showmodel_id
await page.locator('//*[@id="showmodel_id"]').click();
expect(
- await page.locator('//*[@id="showmodel_id"]').isChecked()
+ await page.locator('//*[@id="showmodel_id"]').isChecked(),
).toBeTruthy();
await page.getByTestId("dropdown-edit-model_id").click();
diff --git a/src/frontend/tests/end-to-end/filterEdge.spec.ts b/src/frontend/tests/end-to-end/filterEdge.spec.ts
index e2f7579c5..b35b7c1da 100644
--- a/src/frontend/tests/end-to-end/filterEdge.spec.ts
+++ b/src/frontend/tests/end-to-end/filterEdge.spec.ts
@@ -40,7 +40,7 @@ test("LLMChain - Tooltip", async ({ page }) => {
await page
.locator(
- '//*[@id="react-flow-id"]/div[1]/div[1]/div/div/div[2]/div/div/div[2]/div[3]/div/button/div/div'
+ '//*[@id="react-flow-id"]/div[1]/div[1]/div/div/div[2]/div/div/div[2]/div[3]/div/button/div/div',
)
.hover()
.then(async () => {
@@ -60,17 +60,17 @@ test("LLMChain - Tooltip", async ({ page }) => {
await page.getByTitle("zoom out").click();
await page
.locator(
- '//*[@id="react-flow-id"]/div[1]/div[1]/div/div/div[2]/div/div/div[2]/div[4]/div/button/div/div'
+ '//*[@id="react-flow-id"]/div[1]/div[1]/div/div/div[2]/div/div/div[2]/div[4]/div/button/div/div',
)
.hover()
.then(async () => {
await expect(
- page.getByTestId("tooltip-Model Specs").first()
+ page.getByTestId("tooltip-Model Specs").first(),
).toBeVisible();
await page.waitForTimeout(2000);
await expect(
- page.getByTestId("tooltip-Model Specs").first()
+ page.getByTestId("tooltip-Model Specs").first(),
).toBeVisible();
await page.getByTestId("icon-Search").click();
@@ -81,12 +81,12 @@ test("LLMChain - Tooltip", async ({ page }) => {
await page
.locator(
- '//*[@id="react-flow-id"]/div[1]/div[1]/div/div/div[2]/div/div/div[2]/div[5]/div/button/div/div'
+ '//*[@id="react-flow-id"]/div[1]/div[1]/div/div/div[2]/div/div/div[2]/div[5]/div/button/div/div',
)
.hover()
.then(async () => {
await expect(
- page.getByTestId("empty-tooltip-filter").first()
+ page.getByTestId("empty-tooltip-filter").first(),
).toBeVisible();
});
});
@@ -113,7 +113,7 @@ test("LLMChain - Filter", async ({ page }) => {
await page.waitForTimeout(1000);
await page.getByTestId(
- "input-list-plus-btn-edit_metadata_indexing_include-2"
+ "input-list-plus-btn-edit_metadata_indexing_include-2",
);
await page.getByTestId("blank-flow").click();
@@ -136,7 +136,7 @@ test("LLMChain - Filter", async ({ page }) => {
await page
.locator(
- '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div/div/div[2]/div[4]/div/button/div/div'
+ '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div/div/div[2]/div[4]/div/button/div/div',
)
.click();
@@ -149,14 +149,14 @@ test("LLMChain - Filter", async ({ page }) => {
await expect(page.getByTestId("model_specsChatOpenAI")).toBeVisible();
await expect(page.getByTestId("model_specsChatVertexAI")).toBeVisible();
await expect(
- page.getByTestId("model_specsGoogle Generative AI")
+ page.getByTestId("model_specsGoogle Generative AI"),
).toBeVisible();
await expect(
- page.getByTestId("model_specsHugging Face Inference API")
+ page.getByTestId("model_specsHugging Face Inference API"),
).toBeVisible();
await expect(page.getByTestId("model_specsOllama")).toBeVisible();
await expect(
- page.getByTestId("model_specsQianfanChatEndpoint")
+ page.getByTestId("model_specsQianfanChatEndpoint"),
).toBeVisible();
await expect(page.getByTestId("model_specsQianfanLLMEndpoint")).toBeVisible();
await expect(page.getByTestId("model_specsVertexAI")).toBeVisible();
@@ -168,7 +168,7 @@ test("LLMChain - Filter", async ({ page }) => {
await expect(page.getByTestId("model_specsAmazon Bedrock")).not.toBeVisible();
await expect(page.getByTestId("modelsAzure OpenAI")).not.toBeVisible();
await expect(
- page.getByTestId("model_specsAzureChatOpenAI")
+ page.getByTestId("model_specsAzureChatOpenAI"),
).not.toBeVisible();
await expect(page.getByTestId("model_specsChatAnthropic")).not.toBeVisible();
await expect(page.getByTestId("model_specsChatLiteLLM")).not.toBeVisible();
@@ -178,13 +178,13 @@ test("LLMChain - Filter", async ({ page }) => {
await page
.locator(
- '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div/div/div[2]/div[7]/button/div/div'
+ '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div/div/div[2]/div[7]/button/div/div',
)
.click();
await page
.locator(
- '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div/div/div[2]/div[7]/button/div/div'
+ '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div/div/div[2]/div[7]/button/div/div',
)
.click();
diff --git a/src/frontend/tests/end-to-end/floatComponent.spec.ts b/src/frontend/tests/end-to-end/floatComponent.spec.ts
index 4989a0f5f..0776355a6 100644
--- a/src/frontend/tests/end-to-end/floatComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/floatComponent.spec.ts
@@ -71,27 +71,27 @@ test("FloatComponent", async ({ page }) => {
await page.getByTestId("showmirostat").click();
expect(
- await page.locator('//*[@id="showmirostat"]').isChecked()
+ await page.locator('//*[@id="showmirostat"]').isChecked(),
).toBeTruthy();
await page.getByTestId("showmirostat_eta").click();
expect(
- await page.locator('//*[@id="showmirostat_eta"]').isChecked()
+ await page.locator('//*[@id="showmirostat_eta"]').isChecked(),
).toBeTruthy();
await page.getByTestId("showmirostat_eta").click();
expect(
- await page.locator('//*[@id="showmirostat_eta"]').isChecked()
+ await page.locator('//*[@id="showmirostat_eta"]').isChecked(),
).toBeFalsy();
await page.getByTestId("showmirostat_tau").click();
expect(
- await page.locator('//*[@id="showmirostat_tau"]').isChecked()
+ await page.locator('//*[@id="showmirostat_tau"]').isChecked(),
).toBeTruthy();
await page.getByTestId("showmirostat_tau").click();
expect(
- await page.locator('//*[@id="showmirostat_tau"]').isChecked()
+ await page.locator('//*[@id="showmirostat_tau"]').isChecked(),
).toBeFalsy();
await page.getByTestId("showmodel").click();
@@ -114,22 +114,22 @@ test("FloatComponent", async ({ page }) => {
await page.getByTestId("shownum_thread").click();
expect(
- await page.locator('//*[@id="shownum_thread"]').isChecked()
+ await page.locator('//*[@id="shownum_thread"]').isChecked(),
).toBeTruthy();
await page.getByTestId("shownum_thread").click();
expect(
- await page.locator('//*[@id="shownum_thread"]').isChecked()
+ await page.locator('//*[@id="shownum_thread"]').isChecked(),
).toBeFalsy();
await page.getByTestId("showrepeat_last_n").click();
expect(
- await page.locator('//*[@id="showrepeat_last_n"]').isChecked()
+ await page.locator('//*[@id="showrepeat_last_n"]').isChecked(),
).toBeTruthy();
await page.getByTestId("showrepeat_last_n").click();
expect(
- await page.locator('//*[@id="showrepeat_last_n"]').isChecked()
+ await page.locator('//*[@id="showrepeat_last_n"]').isChecked(),
).toBeFalsy();
await page.getByText("Save Changes", { exact: true }).click();
@@ -145,7 +145,7 @@ test("FloatComponent", async ({ page }) => {
// showtemperature
await page.locator('//*[@id="showtemperature"]').click();
expect(
- await page.locator('//*[@id="showtemperature"]').isChecked()
+ await page.locator('//*[@id="showtemperature"]').isChecked(),
).toBeTruthy();
await page.getByText("Save Changes", { exact: true }).click();
diff --git a/src/frontend/tests/end-to-end/flowSettings.spec.ts b/src/frontend/tests/end-to-end/flowSettings.spec.ts
index a2e9f25c0..25807ed88 100644
--- a/src/frontend/tests/end-to-end/flowSettings.spec.ts
+++ b/src/frontend/tests/end-to-end/flowSettings.spec.ts
@@ -29,7 +29,7 @@ test("flowSettings", async ({ page }) => {
await page
.getByPlaceholder("Flow name")
.fill(
- "Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test"
+ "Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test",
);
await page.getByText("Character limit reached").isVisible();
@@ -41,7 +41,7 @@ test("flowSettings", async ({ page }) => {
await page
.getByPlaceholder("Flow description")
.fill(
- "Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test"
+ "Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test Flow Name Test",
);
await page.getByTestId("save-flow-settings").click();
diff --git a/src/frontend/tests/end-to-end/folders.spec.ts b/src/frontend/tests/end-to-end/folders.spec.ts
index 384816b3f..e0f694910 100644
--- a/src/frontend/tests/end-to-end/folders.spec.ts
+++ b/src/frontend/tests/end-to-end/folders.spec.ts
@@ -58,7 +58,7 @@ test("add folder by drag and drop", async ({ page }) => {
const jsonContent = readFileSync(
"src/frontend/tests/end-to-end/assets/collection.json",
- "utf-8"
+ "utf-8",
);
// Create the DataTransfer and File
@@ -78,7 +78,7 @@ test("add folder by drag and drop", async ({ page }) => {
"drop",
{
dataTransfer,
- }
+ },
);
await page.getByText("Getting Started").first().isVisible();
diff --git a/src/frontend/tests/end-to-end/inputComponent.spec.ts b/src/frontend/tests/end-to-end/inputComponent.spec.ts
index 5a84c9f67..317ab231e 100644
--- a/src/frontend/tests/end-to-end/inputComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/inputComponent.spec.ts
@@ -60,69 +60,69 @@ test("InputComponent", async ({ page }) => {
expect(
await page
.locator('//*[@id="showchroma_server_cors_allow_origins"]')
- .isChecked()
+ .isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showchroma_server_grpc_port"]').click();
expect(
- await page.locator('//*[@id="showchroma_server_grpc_port"]').isChecked()
+ await page.locator('//*[@id="showchroma_server_grpc_port"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showchroma_server_host"]').click();
expect(
- await page.locator('//*[@id="showchroma_server_host"]').isChecked()
+ await page.locator('//*[@id="showchroma_server_host"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showchroma_server_http_port"]').click();
expect(
- await page.locator('//*[@id="showchroma_server_http_port"]').isChecked()
+ await page.locator('//*[@id="showchroma_server_http_port"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showchroma_server_ssl_enabled"]').click();
expect(
- await page.locator('//*[@id="showchroma_server_ssl_enabled"]').isChecked()
+ await page.locator('//*[@id="showchroma_server_ssl_enabled"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showcollection_name"]').click();
expect(
- await page.locator('//*[@id="showcollection_name"]').isChecked()
+ await page.locator('//*[@id="showcollection_name"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showindex_directory"]').click();
expect(
- await page.locator('//*[@id="showindex_directory"]').isChecked()
+ await page.locator('//*[@id="showindex_directory"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showchroma_server_cors_allow_origins"]').click();
expect(
await page
.locator('//*[@id="showchroma_server_cors_allow_origins"]')
- .isChecked()
+ .isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showchroma_server_grpc_port"]').click();
expect(
- await page.locator('//*[@id="showchroma_server_grpc_port"]').isChecked()
+ await page.locator('//*[@id="showchroma_server_grpc_port"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showchroma_server_host"]').click();
expect(
- await page.locator('//*[@id="showchroma_server_host"]').isChecked()
+ await page.locator('//*[@id="showchroma_server_host"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showchroma_server_http_port"]').click();
expect(
- await page.locator('//*[@id="showchroma_server_http_port"]').isChecked()
+ await page.locator('//*[@id="showchroma_server_http_port"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showchroma_server_ssl_enabled"]').click();
expect(
- await page.locator('//*[@id="showchroma_server_ssl_enabled"]').isChecked()
+ await page.locator('//*[@id="showchroma_server_ssl_enabled"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showindex_directory"]').click();
expect(
- await page.locator('//*[@id="showindex_directory"]').isChecked()
+ await page.locator('//*[@id="showindex_directory"]').isChecked(),
).toBeTruthy();
let valueEditNode = await page
@@ -152,7 +152,7 @@ test("InputComponent", async ({ page }) => {
await page.locator('//*[@id="showcollection_name"]').click();
expect(
- await page.locator('//*[@id="showcollection_name"]').isChecked()
+ await page.locator('//*[@id="showcollection_name"]').isChecked(),
).toBeTruthy();
await page.getByText("Save Changes", { exact: true }).click();
diff --git a/src/frontend/tests/end-to-end/inputListComponent.spec.ts b/src/frontend/tests/end-to-end/inputListComponent.spec.ts
index 5b6dcdea8..463312839 100644
--- a/src/frontend/tests/end-to-end/inputListComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/inputListComponent.spec.ts
@@ -41,19 +41,19 @@ test("InputListComponent", async ({ page }) => {
await page.getByTestId("edit-button-modal").click();
expect(
- await page.getByTestId("showmetadata_indexing_exclude").isChecked()
+ await page.getByTestId("showmetadata_indexing_exclude").isChecked(),
).toBeFalsy();
await page.getByTestId("showmetadata_indexing_exclude").click();
expect(
- await page.getByTestId("showmetadata_indexing_exclude").isChecked()
+ await page.getByTestId("showmetadata_indexing_exclude").isChecked(),
).toBeTruthy();
expect(
- await page.getByTestId("showmetadata_indexing_include").isChecked()
+ await page.getByTestId("showmetadata_indexing_include").isChecked(),
).toBeFalsy();
await page.getByTestId("showmetadata_indexing_include").click();
expect(
- await page.getByTestId("showmetadata_indexing_include").isChecked()
+ await page.getByTestId("showmetadata_indexing_include").isChecked(),
).toBeTruthy();
await page
@@ -93,7 +93,7 @@ test("InputListComponent", async ({ page }) => {
.click();
const plusButtonLocator = page.getByTestId(
- "input-list-plus-btn_metadata_indexing_include-1"
+ "input-list-plus-btn_metadata_indexing_include-1",
);
const elementCount = await plusButtonLocator?.count();
@@ -164,12 +164,12 @@ test("InputListComponent", async ({ page }) => {
.click();
const plusButtonLocatorEdit0 = await page.getByTestId(
- "input-list-plus-btn-edit_metadata_indexing_include-0"
+ "input-list-plus-btn-edit_metadata_indexing_include-0",
);
const elementCountEdit0 = await plusButtonLocatorEdit0?.count();
const plusButtonLocatorEdit2 = await page.getByTestId(
- "input-list-plus-btn-edit_metadata_indexing_include-2"
+ "input-list-plus-btn-edit_metadata_indexing_include-2",
);
const elementCountEdit2 = await plusButtonLocatorEdit2?.count();
@@ -178,13 +178,13 @@ test("InputListComponent", async ({ page }) => {
}
const minusButtonLocatorEdit1 = await page.getByTestId(
- "input-list-minus-btn-edit_metadata_indexing_include-1"
+ "input-list-minus-btn-edit_metadata_indexing_include-1",
);
const elementCountMinusEdit1 = await minusButtonLocatorEdit1?.count();
const minusButtonLocatorEdit2 = await page.getByTestId(
- "input-list-minus-btn-edit_metadata_indexing_include-2"
+ "input-list-minus-btn-edit_metadata_indexing_include-2",
);
const elementCountMinusEdit2 = await minusButtonLocatorEdit2?.count();
diff --git a/src/frontend/tests/end-to-end/intComponent.spec.ts b/src/frontend/tests/end-to-end/intComponent.spec.ts
index a9af11987..be3918b77 100644
--- a/src/frontend/tests/end-to-end/intComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/intComponent.spec.ts
@@ -87,77 +87,77 @@ test("IntComponent", async ({ page }) => {
await page.locator('//*[@id="showmodel_kwargs"]').click();
expect(
- await page.locator('//*[@id="showmodel_kwargs"]').isChecked()
+ await page.locator('//*[@id="showmodel_kwargs"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showmodel_name"]').click();
expect(
- await page.locator('//*[@id="showmodel_name"]').isChecked()
+ await page.locator('//*[@id="showmodel_name"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showopenai_api_base"]').click();
expect(
- await page.locator('//*[@id="showopenai_api_base"]').isChecked()
+ await page.locator('//*[@id="showopenai_api_base"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showopenai_api_key"]').click();
expect(
- await page.locator('//*[@id="showopenai_api_key"]').isChecked()
+ await page.locator('//*[@id="showopenai_api_key"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showtemperature"]').click();
expect(
- await page.locator('//*[@id="showtemperature"]').isChecked()
+ await page.locator('//*[@id="showtemperature"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showmodel_kwargs"]').click();
expect(
- await page.locator('//*[@id="showmodel_kwargs"]').isChecked()
+ await page.locator('//*[@id="showmodel_kwargs"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showmodel_name"]').click();
expect(
- await page.locator('//*[@id="showmodel_name"]').isChecked()
+ await page.locator('//*[@id="showmodel_name"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showopenai_api_base"]').click();
expect(
- await page.locator('//*[@id="showopenai_api_base"]').isChecked()
+ await page.locator('//*[@id="showopenai_api_base"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showopenai_api_key"]').click();
expect(
- await page.locator('//*[@id="showopenai_api_key"]').isChecked()
+ await page.locator('//*[@id="showopenai_api_key"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showtemperature"]').click();
expect(
- await page.locator('//*[@id="showtemperature"]').isChecked()
+ await page.locator('//*[@id="showtemperature"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showmodel_kwargs"]').click();
expect(
- await page.locator('//*[@id="showmodel_kwargs"]').isChecked()
+ await page.locator('//*[@id="showmodel_kwargs"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showmodel_name"]').click();
expect(
- await page.locator('//*[@id="showmodel_name"]').isChecked()
+ await page.locator('//*[@id="showmodel_name"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showopenai_api_base"]').click();
expect(
- await page.locator('//*[@id="showopenai_api_base"]').isChecked()
+ await page.locator('//*[@id="showopenai_api_base"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showopenai_api_key"]').click();
expect(
- await page.locator('//*[@id="showopenai_api_key"]').isChecked()
+ await page.locator('//*[@id="showopenai_api_key"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showtemperature"]').click();
expect(
- await page.locator('//*[@id="showtemperature"]').isChecked()
+ await page.locator('//*[@id="showtemperature"]').isChecked(),
).toBeFalsy();
await page.getByText("Save Changes", { exact: true }).click();
@@ -172,7 +172,7 @@ test("IntComponent", async ({ page }) => {
await page.locator('//*[@id="showtimeout"]').click();
expect(
- await page.locator('//*[@id="showtimeout"]').isChecked()
+ await page.locator('//*[@id="showtimeout"]').isChecked(),
).toBeTruthy();
const valueEditNode = await page
diff --git a/src/frontend/tests/end-to-end/keyPairListComponent.spec.ts b/src/frontend/tests/end-to-end/keyPairListComponent.spec.ts
index e5763bd2f..bf9336b3c 100644
--- a/src/frontend/tests/end-to-end/keyPairListComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/keyPairListComponent.spec.ts
@@ -81,7 +81,7 @@ test("KeypairListComponent", async ({ page }) => {
expect(await page.locator('//*[@id="showcache"]').isChecked()).toBeFalsy();
await page.locator('//*[@id="showcredentials_profile_name"]').click();
expect(
- await page.locator('//*[@id="showcredentials_profile_name"]').isChecked()
+ await page.locator('//*[@id="showcredentials_profile_name"]').isChecked(),
).toBeFalsy();
await page.getByText("Save Changes", { exact: true }).click();
@@ -96,7 +96,7 @@ test("KeypairListComponent", async ({ page }) => {
await page.locator('//*[@id="showcredentials_profile_name"]').click();
expect(
- await page.locator('//*[@id="showcredentials_profile_name"]').isChecked()
+ await page.locator('//*[@id="showcredentials_profile_name"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showcache"]').click();
expect(await page.locator('//*[@id="showcache"]').isChecked()).toBeTruthy();
diff --git a/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts b/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts
index 77d35cb03..a6848d856 100644
--- a/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts
+++ b/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts
@@ -61,7 +61,7 @@ test("LangflowShortcuts", async ({ page }) => {
await page
.locator(
- '//*[@id="react-flow-id"]/div[1]/div[1]/div[1]/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div[1]'
+ '//*[@id="react-flow-id"]/div[1]/div[1]/div[1]/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div[1]',
)
.click();
await page.keyboard.press("Backspace");
@@ -84,7 +84,7 @@ test("LangflowShortcuts", async ({ page }) => {
await page
.locator(
- '//*[@id="react-flow-id"]/div[1]/div[1]/div[1]/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div[1]'
+ '//*[@id="react-flow-id"]/div[1]/div[1]/div[1]/div/div[2]/div[2]/div/div[1]/div/div[1]/div/div/div[1]',
)
.click();
await page.keyboard.press("Backspace");
diff --git a/src/frontend/tests/end-to-end/nestedComponent.spec.ts b/src/frontend/tests/end-to-end/nestedComponent.spec.ts
index a6906132f..eaa37f2e2 100644
--- a/src/frontend/tests/end-to-end/nestedComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/nestedComponent.spec.ts
@@ -41,7 +41,7 @@ test("NestedComponent", async ({ page }) => {
await page.locator('//*[@id="showpool_threads"]').click();
expect(
- await page.locator('//*[@id="showpool_threads"]').isChecked()
+ await page.locator('//*[@id="showpool_threads"]').isChecked(),
).toBeTruthy();
//showtext_key
@@ -53,140 +53,140 @@ test("NestedComponent", async ({ page }) => {
await page.locator('//*[@id="showindex_name"]').click();
expect(
- await page.locator('//*[@id="showindex_name"]').isChecked()
+ await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeFalsy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
- await page.locator('//*[@id="shownamespace"]').isChecked()
+ await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeFalsy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
- await page.locator('//*[@id="showpinecone_api_key"]').isChecked()
+ await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeFalsy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
- await page.locator('//*[@id="showindex_name"]').isChecked()
+ await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeTruthy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
- await page.locator('//*[@id="shownamespace"]').isChecked()
+ await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeTruthy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
- await page.locator('//*[@id="showpinecone_api_key"]').isChecked()
+ await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeTruthy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
- await page.locator('//*[@id="showindex_name"]').isChecked()
+ await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeFalsy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
- await page.locator('//*[@id="shownamespace"]').isChecked()
+ await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeFalsy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
- await page.locator('//*[@id="showpinecone_api_key"]').isChecked()
+ await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeFalsy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
- await page.locator('//*[@id="showindex_name"]').isChecked()
+ await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeTruthy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
- await page.locator('//*[@id="shownamespace"]').isChecked()
+ await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeTruthy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
- await page.locator('//*[@id="showpinecone_api_key"]').isChecked()
+ await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeTruthy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
- await page.locator('//*[@id="showindex_name"]').isChecked()
+ await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeFalsy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
- await page.locator('//*[@id="shownamespace"]').isChecked()
+ await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeFalsy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
- await page.locator('//*[@id="showpinecone_api_key"]').isChecked()
+ await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeFalsy();
// showindex_name
await page.locator('//*[@id="showindex_name"]').click();
expect(
- await page.locator('//*[@id="showindex_name"]').isChecked()
+ await page.locator('//*[@id="showindex_name"]').isChecked(),
).toBeTruthy();
// shownamespace
await page.locator('//*[@id="shownamespace"]').click();
expect(
- await page.locator('//*[@id="shownamespace"]').isChecked()
+ await page.locator('//*[@id="shownamespace"]').isChecked(),
).toBeTruthy();
// showpinecone_api_key
await page.locator('//*[@id="showpinecone_api_key"]').click();
expect(
- await page.locator('//*[@id="showpinecone_api_key"]').isChecked()
+ await page.locator('//*[@id="showpinecone_api_key"]').isChecked(),
).toBeTruthy();
//showpool_threads
await page.locator('//*[@id="showpool_threads"]').click();
expect(
- await page.locator('//*[@id="showpool_threads"]').isChecked()
+ await page.locator('//*[@id="showpool_threads"]').isChecked(),
).toBeFalsy();
//showtext_key
await page.locator('//*[@id="showtext_key"]').click();
expect(
- await page.locator('//*[@id="showtext_key"]').isChecked()
+ await page.locator('//*[@id="showtext_key"]').isChecked(),
).toBeTruthy();
await page.getByText("Save Changes", { exact: true }).click();
diff --git a/src/frontend/tests/end-to-end/promptModalComponent.spec.ts b/src/frontend/tests/end-to-end/promptModalComponent.spec.ts
index b7c86ee97..201a4b624 100644
--- a/src/frontend/tests/end-to-end/promptModalComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/promptModalComponent.spec.ts
@@ -138,7 +138,7 @@ test("PromptTemplateComponent", async ({ page }) => {
await page.locator('//*[@id="showtemplate"]').click();
expect(
- await page.locator('//*[@id="showtemplate"]').isChecked()
+ await page.locator('//*[@id="showtemplate"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showprompt"]').click();
@@ -158,7 +158,7 @@ test("PromptTemplateComponent", async ({ page }) => {
await page.locator('//*[@id="showtemplate"]').click();
expect(
- await page.locator('//*[@id="showtemplate"]').isChecked()
+ await page.locator('//*[@id="showtemplate"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showprompt"]').click();
diff --git a/src/frontend/tests/end-to-end/saveComponents.spec.ts b/src/frontend/tests/end-to-end/saveComponents.spec.ts
index 163cb8dcd..10b679a89 100644
--- a/src/frontend/tests/end-to-end/saveComponents.spec.ts
+++ b/src/frontend/tests/end-to-end/saveComponents.spec.ts
@@ -27,7 +27,7 @@ test.describe("save component tests", () => {
// Read your file into a buffer.
const jsonContent = readFileSync(
"src/frontend/tests/end-to-end/assets/flow_group_test.json",
- "utf-8"
+ "utf-8",
);
// Create the DataTransfer and File
@@ -49,7 +49,7 @@ test.describe("save component tests", () => {
"drop",
{
dataTransfer,
- }
+ },
);
const genericNoda = page.getByTestId("div-generic-node");
diff --git a/src/frontend/tests/end-to-end/store.spec.ts b/src/frontend/tests/end-to-end/store.spec.ts
index 13963d698..8e443ecdd 100644
--- a/src/frontend/tests/end-to-end/store.spec.ts
+++ b/src/frontend/tests/end-to-end/store.spec.ts
@@ -262,7 +262,7 @@ test("should share component with share button", async ({ page }) => {
await page.getByText("Set workflow status to public").isVisible();
await page
.getByText(
- "Attention: API keys in specified fields are automatically removed upon sharing."
+ "Attention: API keys in specified fields are automatically removed upon sharing.",
)
.isVisible();
await page.getByText("Export").first().isVisible();
diff --git a/src/frontend/tests/end-to-end/textInputOutput.spec.ts b/src/frontend/tests/end-to-end/textInputOutput.spec.ts
index 88e6b9f08..c2012ce1b 100644
--- a/src/frontend/tests/end-to-end/textInputOutput.spec.ts
+++ b/src/frontend/tests/end-to-end/textInputOutput.spec.ts
@@ -60,7 +60,7 @@ test("TextInputOutputComponent", async ({ page }) => {
// Click and hold on the first element
await page
.locator(
- '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[1]/div/div[2]/div[6]/button/div/div'
+ '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[1]/div/div[2]/div[6]/button/div/div',
)
.hover();
await page.mouse.down();
@@ -68,7 +68,7 @@ test("TextInputOutputComponent", async ({ page }) => {
// Move to the second element
await page
.locator(
- '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[9]/div/button/div/div'
+ '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[9]/div/button/div/div',
)
.hover();
@@ -92,7 +92,7 @@ test("TextInputOutputComponent", async ({ page }) => {
// Click and hold on the first element
await page
.locator(
- '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[13]/button/div/div'
+ '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[2]/div/div[2]/div[13]/button/div/div',
)
.hover();
await page.mouse.down();
@@ -100,7 +100,7 @@ test("TextInputOutputComponent", async ({ page }) => {
// Move to the second element
await page
.locator(
- '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[3]/div/div[2]/div[3]/div/button/div/div'
+ '//*[@id="react-flow-id"]/div/div[1]/div[1]/div/div[2]/div[3]/div/div[2]/div[3]/div/button/div/div',
)
.hover();
diff --git a/src/frontend/tests/end-to-end/toggleComponent.spec.ts b/src/frontend/tests/end-to-end/toggleComponent.spec.ts
index cbe77f1e3..051366354 100644
--- a/src/frontend/tests/end-to-end/toggleComponent.spec.ts
+++ b/src/frontend/tests/end-to-end/toggleComponent.spec.ts
@@ -45,7 +45,7 @@ test("ToggleComponent", async ({ page }) => {
await page.locator('//*[@id="showload_hidden"]').click();
expect(
- await page.locator('//*[@id="showload_hidden"]').isChecked()
+ await page.locator('//*[@id="showload_hidden"]').isChecked(),
).toBeTruthy();
await page.getByText("Save Changes", { exact: true }).click();
@@ -81,12 +81,12 @@ test("ToggleComponent", async ({ page }) => {
await page.locator('//*[@id="showload_hidden"]').click();
expect(
- await page.locator('//*[@id="showload_hidden"]').isChecked()
+ await page.locator('//*[@id="showload_hidden"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showmax_concurrency"]').click();
expect(
- await page.locator('//*[@id="showmax_concurrency"]').isChecked()
+ await page.locator('//*[@id="showmax_concurrency"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showpath"]').click();
@@ -94,22 +94,22 @@ test("ToggleComponent", async ({ page }) => {
await page.locator('//*[@id="showrecursive"]').click();
expect(
- await page.locator('//*[@id="showrecursive"]').isChecked()
+ await page.locator('//*[@id="showrecursive"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showsilent_errors"]').click();
expect(
- await page.locator('//*[@id="showsilent_errors"]').isChecked()
+ await page.locator('//*[@id="showsilent_errors"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showuse_multithreading"]').click();
expect(
- await page.locator('//*[@id="showuse_multithreading"]').isChecked()
+ await page.locator('//*[@id="showuse_multithreading"]').isChecked(),
).toBeTruthy();
await page.locator('//*[@id="showmax_concurrency"]').click();
expect(
- await page.locator('//*[@id="showmax_concurrency"]').isChecked()
+ await page.locator('//*[@id="showmax_concurrency"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showpath"]').click();
@@ -117,17 +117,17 @@ test("ToggleComponent", async ({ page }) => {
await page.locator('//*[@id="showrecursive"]').click();
expect(
- await page.locator('//*[@id="showrecursive"]').isChecked()
+ await page.locator('//*[@id="showrecursive"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showsilent_errors"]').click();
expect(
- await page.locator('//*[@id="showsilent_errors"]').isChecked()
+ await page.locator('//*[@id="showsilent_errors"]').isChecked(),
).toBeFalsy();
await page.locator('//*[@id="showuse_multithreading"]').click();
expect(
- await page.locator('//*[@id="showuse_multithreading"]').isChecked()
+ await page.locator('//*[@id="showuse_multithreading"]').isChecked(),
).toBeFalsy();
await page.getByText("Save Changes", { exact: true }).click();
@@ -144,38 +144,38 @@ test("ToggleComponent", async ({ page }) => {
await page.locator('//*[@id="showload_hidden"]').click();
expect(
- await page.locator('//*[@id="showload_hidden"]').isChecked()
+ await page.locator('//*[@id="showload_hidden"]').isChecked(),
).toBeTruthy();
expect(
- await page.getByTestId("toggle-edit-load_hidden").isChecked()
+ await page.getByTestId("toggle-edit-load_hidden").isChecked(),
).toBeTruthy();
await page.getByText("Save Changes", { exact: true }).click();
await page.getByTestId("toggle-load_hidden").click();
expect(
- await page.getByTestId("toggle-load_hidden").isChecked()
+ await page.getByTestId("toggle-load_hidden").isChecked(),
).toBeFalsy();
await page.getByTestId("toggle-load_hidden").click();
expect(
- await page.getByTestId("toggle-load_hidden").isChecked()
+ await page.getByTestId("toggle-load_hidden").isChecked(),
).toBeTruthy();
await page.getByTestId("toggle-load_hidden").click();
expect(
- await page.getByTestId("toggle-load_hidden").isChecked()
+ await page.getByTestId("toggle-load_hidden").isChecked(),
).toBeFalsy();
await page.getByTestId("toggle-load_hidden").click();
expect(
- await page.getByTestId("toggle-load_hidden").isChecked()
+ await page.getByTestId("toggle-load_hidden").isChecked(),
).toBeTruthy();
await page.getByTestId("toggle-load_hidden").click();
expect(
- await page.getByTestId("toggle-load_hidden").isChecked()
+ await page.getByTestId("toggle-load_hidden").isChecked(),
).toBeFalsy();
}
});