feat: Enable partial exections v2 by default (#13344)

Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
This commit is contained in:
Danny Martini
2025-02-21 10:25:53 +01:00
committed by GitHub
parent 073b05b10c
commit 29ae2396c9
11 changed files with 115 additions and 92 deletions

View File

@@ -138,7 +138,6 @@ export const defaultSettings: FrontendSettings = {
easyAIWorkflowOnboarded: false,
partialExecution: {
version: 1,
enforce: false,
},
folders: {
enabled: false,

View File

@@ -117,44 +117,32 @@ describe('settings.store', () => {
{
name: 'pick the default',
default: 1 as const,
enforce: false,
userVersion: -1,
result: 1,
},
{
name: "pick the user' choice",
default: 1 as const,
enforce: false,
userVersion: 2,
name: 'pick the default',
default: 2 as const,
userVersion: -1,
result: 2,
},
{
name: 'enforce the default',
name: "pick the user's choice",
default: 1 as const,
enforce: true,
userVersion: 2,
result: 1,
},
{
name: 'enforce the default',
default: 2 as const,
enforce: true,
userVersion: 1,
result: 2,
},
{
name: 'handle values that used to be allowed in local storage',
default: 1 as const,
enforce: false,
userVersion: 0,
result: 1,
},
])('%name', async ({ default: defaultVersion, userVersion, enforce, result }) => {
])('%name', async ({ default: defaultVersion, userVersion, result }) => {
const settingsStore = useSettingsStore();
settingsStore.settings.partialExecution = {
version: defaultVersion,
enforce,
};
vi.mocked(useLocalStorage).mockReturnValueOnce(ref(userVersion));

View File

@@ -103,16 +103,11 @@ export const useSettingsStore = defineStore(STORES.SETTINGS, () => {
const partialExecutionVersion = computed(() => {
const defaultVersion = settings.value.partialExecution?.version ?? 1;
const enforceVersion = settings.value.partialExecution?.enforce ?? false;
// -1 means we pick the defaultVersion
// 1 is the old flow
// 2 is the new flow
const userVersion = useLocalStorage('PartialExecution.version', -1).value;
const version = enforceVersion
? defaultVersion
: userVersion === -1
? defaultVersion
: userVersion;
const version = userVersion === -1 ? defaultVersion : userVersion;
// For backwards compatibility, e.g. if the user has 0 in their local
// storage, which used to be allowed, but not anymore.

View File

@@ -682,31 +682,21 @@ describe('useWorkflowsStore', () => {
});
test.each([
// enforce true cases - the version is always the defaultVersion
[-1, 1, true, 1], // enforce true, use default (1)
[0, 1, true, 1], // enforce true, use default (1)
[1, 1, true, 1], // enforce true, use default (1)
[2, 1, true, 1], // enforce true, use default (1)
[-1, 2, true, 2], // enforce true, use default (2)
[0, 2, true, 2], // enforce true, use default (2)
[1, 2, true, 2], // enforce true, use default (2)
[2, 2, true, 2], // enforce true, use default (2)
// enforce false cases - check userVersion behavior
[-1, 1, false, 1], // userVersion -1, use default (1)
[0, 1, false, 1], // userVersion 0, invalid, use default (1)
[1, 1, false, 1], // userVersion 1, valid, use userVersion (1)
[2, 1, false, 2], // userVersion 2, valid, use userVersion (2)
[-1, 2, false, 2], // userVersion -1, use default (2)
[0, 2, false, 1], // userVersion 0, invalid, use default (2)
[1, 2, false, 1], // userVersion 1, valid, use userVersion (1)
[2, 2, false, 2], // userVersion 2, valid, use userVersion (2)
] as Array<[number, 1 | 2, boolean, number]>)(
// check userVersion behavior
[-1, 1, 1], // userVersion -1, use default (1)
[0, 1, 1], // userVersion 0, invalid, use default (1)
[1, 1, 1], // userVersion 1, valid, use userVersion (1)
[2, 1, 2], // userVersion 2, valid, use userVersion (2)
[-1, 2, 2], // userVersion -1, use default (2)
[0, 2, 1], // userVersion 0, invalid, use default (2)
[1, 2, 1], // userVersion 1, valid, use userVersion (1)
[2, 2, 2], // userVersion 2, valid, use userVersion (2)
] as Array<[number, 1 | 2, number]>)(
'when { userVersion:%s, defaultVersion:%s, enforced:%s } run workflow should use partial execution version %s',
async (userVersion, defaultVersion, enforce, expectedVersion) => {
async (userVersion, defaultVersion, expectedVersion) => {
vi.mocked(useLocalStorage).mockReturnValueOnce(ref(userVersion));
settingsStore.settings = {
partialExecution: { version: defaultVersion, enforce },
partialExecution: { version: defaultVersion },
} as FrontendSettings;
const workflowData = { id: '1', nodes: [], connections: {} };