blob: a00678dedd8833e42e579df5f907726cb7cfd2ec [file] [log] [blame]
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { BASE_URL, E2E_TEST_FOLDER } from './models/base-page';
export const cleanupTestNotebooks = async () => {
try {
console.log('Cleaning up test folder via API...');
// Get all notebooks and folders
const response = await fetch(`${BASE_URL}/api/notebook`);
const data = await response.json();
if (!data.body || !Array.isArray(data.body)) {
console.log('No notebooks found or invalid response format');
return;
}
// Find the test folders (E2E_TEST_FOLDER, TestFolder_, and TestFolderRenamed_ patterns)
const testFolders = data.body.filter((item: { path: string }) => {
if (!item.path || item.path.includes(`~Trash`)) {
return false;
}
const folderName = item.path.split('/')[1];
return (
folderName === E2E_TEST_FOLDER ||
folderName?.startsWith('TestFolder_') ||
folderName?.startsWith('TestFolderRenamed_')
);
});
if (testFolders.length === 0) {
console.log('No test folder found to clean up');
return;
}
await Promise.all(
testFolders.map(async (testFolder: { id: string; path: string }) => {
try {
console.log(`Deleting test folder: ${testFolder.id} (${testFolder.path})`);
const deleteResponse = await fetch(`${BASE_URL}/api/notebook/${testFolder.id}`, {
method: 'DELETE'
});
// Although a 500 status code is generally not considered a successful response,
// this API returns 500 even when the operation actually succeeds.
// I'll investigate this further and create an issue.
if (deleteResponse.status === 200 || deleteResponse.status === 500) {
console.log(`Deleted test folder: ${testFolder.path}`);
} else {
console.warn(`Failed to delete test folder ${testFolder.path}: ${deleteResponse.status}`);
}
} catch (error) {
console.error(`Error deleting test folder ${testFolder.path}:`, error);
}
})
);
console.log('Test folder cleanup completed');
} catch (error) {
if (error instanceof Error && error.message.includes('ECONNREFUSED')) {
console.error('Failed to connect to local server. Please start the frontend server first:');
console.error(' npm start');
console.error(` or make sure ${BASE_URL} is running`);
} else {
console.warn('Failed to cleanup test folder:', error);
}
}
};
if (require.main === module) {
cleanupTestNotebooks()
.then(() => {
console.log('Cleanup completed successfully');
process.exit(0);
})
.catch(error => {
console.error('Cleanup failed:', error);
process.exit(1);
});
}