mirror of
https://github.com/tiddly-gittly/TidGi-Desktop.git
synced 2025-12-06 02:30:47 -08:00
fix: cleanup
This commit is contained in:
parent
7f3127b4d1
commit
3c979b2562
7 changed files with 18 additions and 48 deletions
|
|
@ -8,7 +8,7 @@ Feature: TidGi Preference
|
||||||
And I wait for the page to load completely
|
And I wait for the page to load completely
|
||||||
And I should see a "page body" element with selector "body"
|
And I should see a "page body" element with selector "body"
|
||||||
|
|
||||||
@setup
|
@ai-setting
|
||||||
Scenario: Configure AI provider and default model
|
Scenario: Configure AI provider and default model
|
||||||
# Step 1: Configure AI settings first - Open preferences window, wait a second so its URL settle down.
|
# Step 1: Configure AI settings first - Open preferences window, wait a second so its URL settle down.
|
||||||
When I click on a "settings button" element with selector "#open-preferences-button"
|
When I click on a "settings button" element with selector "#open-preferences-button"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { After, DataTable, Given, Then } from '@cucumber/cucumber';
|
import { After, DataTable, Given, Then } from '@cucumber/cucumber';
|
||||||
import { backOff } from 'exponential-backoff';
|
|
||||||
import { AIGlobalSettings, AIProviderConfig } from '@services/externalAPI/interface';
|
import { AIGlobalSettings, AIProviderConfig } from '@services/externalAPI/interface';
|
||||||
|
import { backOff } from 'exponential-backoff';
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
import { isEqual, omit } from 'lodash';
|
import { isEqual, omit } from 'lodash';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
@ -14,7 +14,6 @@ const BACKOFF_OPTIONS = {
|
||||||
numOfAttempts: 10,
|
numOfAttempts: 10,
|
||||||
startingDelay: 200,
|
startingDelay: 200,
|
||||||
timeMultiple: 1.5,
|
timeMultiple: 1.5,
|
||||||
maxDelay: 3000,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -140,13 +139,7 @@ Then('I should see {int} messages in chat history', async function(this: Applica
|
||||||
throw new Error(`Expected ${expectedCount} messages but found ${currentCount}`);
|
throw new Error(`Expected ${expectedCount} messages but found ${currentCount}`);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
BACKOFF_OPTIONS,
|
||||||
...BACKOFF_OPTIONS,
|
|
||||||
retry: (error: Error) => {
|
|
||||||
// Retry if we don't have enough messages yet, but not if we have too many
|
|
||||||
return !error.message.includes('(too many)');
|
|
||||||
},
|
|
||||||
},
|
|
||||||
).catch(async (error: unknown) => {
|
).catch(async (error: unknown) => {
|
||||||
// Get final count for error message
|
// Get final count for error message
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,9 @@ import { clearSubWikiRoutingTestData } from './wiki';
|
||||||
|
|
||||||
// Backoff configuration for retries
|
// Backoff configuration for retries
|
||||||
const BACKOFF_OPTIONS = {
|
const BACKOFF_OPTIONS = {
|
||||||
numOfAttempts: 5,
|
numOfAttempts: 8,
|
||||||
startingDelay: 100,
|
startingDelay: 100,
|
||||||
timeMultiple: 2,
|
timeMultiple: 2,
|
||||||
maxDelay: 2000,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Helper function to check if window type is valid and return the corresponding WindowNames
|
// Helper function to check if window type is valid and return the corresponding WindowNames
|
||||||
|
|
@ -74,10 +73,7 @@ export class ApplicationWorld {
|
||||||
throw new Error('Condition not met');
|
throw new Error('Condition not met');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
BACKOFF_OPTIONS,
|
||||||
...BACKOFF_OPTIONS,
|
|
||||||
retry: () => true,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
} catch {
|
} catch {
|
||||||
|
|
@ -183,13 +179,7 @@ export class ApplicationWorld {
|
||||||
}
|
}
|
||||||
return window;
|
return window;
|
||||||
},
|
},
|
||||||
{
|
BACKOFF_OPTIONS,
|
||||||
...BACKOFF_OPTIONS,
|
|
||||||
retry: (error: Error) => {
|
|
||||||
// Don't retry if it's an invalid window type error
|
|
||||||
return !error.message.includes('is not a valid WindowNames');
|
|
||||||
},
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// If it's an invalid window type error, re-throw it
|
// If it's an invalid window type error, re-throw it
|
||||||
|
|
@ -216,10 +206,10 @@ Before(function(this: ApplicationWorld, { pickle }) {
|
||||||
fs.mkdirSync(screenshotsDirectory, { recursive: true });
|
fs.mkdirSync(screenshotsDirectory, { recursive: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pickle.tags.some((tag) => tag.name === '@setup')) {
|
if (pickle.tags.some((tag) => tag.name === '@ai-setting')) {
|
||||||
clearAISettings();
|
clearAISettings();
|
||||||
}
|
}
|
||||||
if (pickle.tags.some((tag) => tag.name === '@tidgiminiwindow')) {
|
if (pickle.tags.some((tag) => tag.name === '@tidgi-mini-window')) {
|
||||||
clearTidgiMiniWindowSettings();
|
clearTidgiMiniWindowSettings();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -246,13 +236,13 @@ After(async function(this: ApplicationWorld, { pickle }) {
|
||||||
this.mainWindow = undefined;
|
this.mainWindow = undefined;
|
||||||
this.currentWindow = undefined;
|
this.currentWindow = undefined;
|
||||||
}
|
}
|
||||||
if (pickle.tags.some((tag) => tag.name === '@tidgiminiwindow')) {
|
if (pickle.tags.some((tag) => tag.name === '@tidgi-mini-window')) {
|
||||||
clearTidgiMiniWindowSettings();
|
clearTidgiMiniWindowSettings();
|
||||||
}
|
}
|
||||||
if (pickle.tags.some((tag) => tag.name === '@setup')) {
|
if (pickle.tags.some((tag) => tag.name === '@ai-setting')) {
|
||||||
clearAISettings();
|
clearAISettings();
|
||||||
}
|
}
|
||||||
if (pickle.tags.some((tag) => tag.name === '@subwiki-routing')) {
|
if (pickle.tags.some((tag) => tag.name === '@subwiki')) {
|
||||||
clearSubWikiRoutingTestData();
|
clearSubWikiRoutingTestData();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,9 @@ import type { ApplicationWorld } from './application';
|
||||||
|
|
||||||
// Backoff configuration for retries
|
// Backoff configuration for retries
|
||||||
const BACKOFF_OPTIONS = {
|
const BACKOFF_OPTIONS = {
|
||||||
numOfAttempts: 5,
|
numOfAttempts: 8,
|
||||||
startingDelay: 100,
|
startingDelay: 100,
|
||||||
timeMultiple: 2,
|
timeMultiple: 2,
|
||||||
maxDelay: 2000,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Then('I should see {string} in the browser view content', async function(this: ApplicationWorld, expectedText: string) {
|
Then('I should see {string} in the browser view content', async function(this: ApplicationWorld, expectedText: string) {
|
||||||
|
|
@ -27,10 +26,7 @@ Then('I should see {string} in the browser view content', async function(this: A
|
||||||
throw new Error(`Expected text "${expectedText}" not found`);
|
throw new Error(`Expected text "${expectedText}" not found`);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
BACKOFF_OPTIONS,
|
||||||
...BACKOFF_OPTIONS,
|
|
||||||
retry: () => true,
|
|
||||||
},
|
|
||||||
).catch(async () => {
|
).catch(async () => {
|
||||||
const finalContent = await getTextContent(this.app!);
|
const finalContent = await getTextContent(this.app!);
|
||||||
throw new Error(
|
throw new Error(
|
||||||
|
|
@ -55,10 +51,7 @@ Then('I should see {string} in the browser view DOM', async function(this: Appli
|
||||||
throw new Error(`Expected text "${expectedText}" not found in DOM`);
|
throw new Error(`Expected text "${expectedText}" not found in DOM`);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
BACKOFF_OPTIONS,
|
||||||
...BACKOFF_OPTIONS,
|
|
||||||
retry: () => true,
|
|
||||||
},
|
|
||||||
).catch(async () => {
|
).catch(async () => {
|
||||||
const finalDomContent = await getDOMContent(this.app!);
|
const finalDomContent = await getDOMContent(this.app!);
|
||||||
throw new Error(
|
throw new Error(
|
||||||
|
|
@ -83,10 +76,7 @@ Then('the browser view should be loaded and visible', async function(this: Appli
|
||||||
throw new Error('Browser view not loaded');
|
throw new Error('Browser view not loaded');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
BACKOFF_OPTIONS,
|
||||||
...BACKOFF_OPTIONS,
|
|
||||||
retry: () => true,
|
|
||||||
},
|
|
||||||
).catch(() => {
|
).catch(() => {
|
||||||
throw new Error('Browser view is not loaded or visible after multiple attempts');
|
throw new Error('Browser view is not loaded or visible after multiple attempts');
|
||||||
});
|
});
|
||||||
|
|
@ -174,10 +164,7 @@ Then('I should not see a(n) {string} element in browser view with selector {stri
|
||||||
throw new Error('Element still exists');
|
throw new Error('Element still exists');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
BACKOFF_OPTIONS,
|
||||||
...BACKOFF_OPTIONS,
|
|
||||||
retry: () => true,
|
|
||||||
},
|
|
||||||
).catch(() => {
|
).catch(() => {
|
||||||
throw new Error(`Element "${elementComment}" with selector "${selector}" was found in browser view after multiple attempts, but should not be visible`);
|
throw new Error(`Element "${elementComment}" with selector "${selector}" was found in browser view after multiple attempts, but should not be visible`);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
0
features/stepDefinitions/cleanup.ts
Normal file
0
features/stepDefinitions/cleanup.ts
Normal file
|
|
@ -1,4 +1,4 @@
|
||||||
@tidgiminiwindow
|
@tidgi-mini-window
|
||||||
Feature: TidGi Mini Window
|
Feature: TidGi Mini Window
|
||||||
As a user
|
As a user
|
||||||
I want to enable and use the TidGi mini window
|
I want to enable and use the TidGi mini window
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
@tidgiminiwindow
|
@tidgi-mini-window
|
||||||
Feature: TidGi Mini Window Workspace Switching
|
Feature: TidGi Mini Window Workspace Switching
|
||||||
As a user with tidgi mini window already enabled
|
As a user with tidgi mini window already enabled
|
||||||
I want to test tidgi mini window behavior with different workspace configurations
|
I want to test tidgi mini window behavior with different workspace configurations
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue