diff --git a/app/forms/instance-create.tsx b/app/forms/instance-create.tsx
index 211ee7aa36..b37ae653af 100644
--- a/app/forms/instance-create.tsx
+++ b/app/forms/instance-create.tsx
@@ -204,7 +204,7 @@ const baseDefaultValues: InstanceCreateInput = {
*/
presetId: 'general-xs',
memory: 8,
- ncpus: 2,
+ ncpus: 1,
hostname: '',
bootDiskName: '',
@@ -647,12 +647,6 @@ export default function CreateInstanceForm() {
General Purpose
-
- High CPU
-
-
- High Memory
-
Custom
@@ -663,18 +657,6 @@ export default function CreateInstanceForm() {
-
-
- {renderLargeRadioCards('highCPU')}
-
-
-
-
-
- {renderLargeRadioCards('highMemory')}
-
-
-
{
))
}
+// 1 vCPU to 8 GiB RAM
const PRESETS = [
- { category: 'general', id: 'general-xs', memory: 8, ncpus: 2 },
- { category: 'general', id: 'general-sm', memory: 16, ncpus: 4 },
- { category: 'general', id: 'general-md', memory: 32, ncpus: 8 },
- { category: 'general', id: 'general-lg', memory: 64, ncpus: 16 },
-
- { category: 'highCPU', id: 'highCPU-xs', memory: 4, ncpus: 2 },
- { category: 'highCPU', id: 'highCPU-sm', memory: 8, ncpus: 4 },
- { category: 'highCPU', id: 'highCPU-md', memory: 16, ncpus: 8 },
- { category: 'highCPU', id: 'highCPU-lg', memory: 32, ncpus: 16 },
-
- { category: 'highMemory', id: 'highMemory-xs', memory: 16, ncpus: 2 },
- { category: 'highMemory', id: 'highMemory-sm', memory: 32, ncpus: 4 },
- { category: 'highMemory', id: 'highMemory-md', memory: 64, ncpus: 8 },
- { category: 'highMemory', id: 'highMemory-lg', memory: 128, ncpus: 16 },
+ { category: 'general', id: 'general-xs', memory: 8, ncpus: 1 },
+ { category: 'general', id: 'general-sm', memory: 16, ncpus: 2 },
+ { category: 'general', id: 'general-md', memory: 32, ncpus: 4 },
+ { category: 'general', id: 'general-lg', memory: 64, ncpus: 8 },
{ category: 'custom', id: 'custom', memory: 0, ncpus: 0 },
] as const
diff --git a/test/e2e/instance-create.e2e.ts b/test/e2e/instance-create.e2e.ts
index f21a5c9a0a..7a0995b39b 100644
--- a/test/e2e/instance-create.e2e.ts
+++ b/test/e2e/instance-create.e2e.ts
@@ -52,6 +52,9 @@ test('can create an instance', async ({ page }) => {
const instanceName = 'my-instance'
await page.getByRole('textbox', { name: 'Name', exact: true }).fill(instanceName)
await page.fill('textarea[name=description]', 'An instance... from space!')
+
+ // first preset is selected by default
+ await expect(page.getByRole('radio', { name: '1 CPU 8 gibibytes RAM' })).toBeChecked()
await page.locator('.ox-radio-card').nth(3).click()
await page.getByRole('textbox', { name: 'Disk name' }).fill('my-boot-disk')
@@ -104,7 +107,7 @@ test('can create an instance', async ({ page }) => {
await expect(page).toHaveURL(`/projects/mock-project/instances/${instanceName}/storage`)
await expect(page.getByRole('heading', { name: instanceName })).toBeVisible()
- await expect(page.getByText('16 vCPUs')).toBeVisible()
+ await expect(page.getByText('8 vCPUs')).toBeVisible()
await expect(page.getByText('64 GiB')).toBeVisible()
await expect(page.getByText('from space')).toBeVisible()
@@ -189,18 +192,6 @@ test('duplicate instance name produces visible error', async ({ page }) => {
await expect(page.getByText('Instance name already exists')).toBeVisible()
})
-test('first preset is auto-selected in each tab', async ({ page }) => {
- await page.goto('/projects/mock-project/instances-new')
-
- await expect(page.getByRole('radio', { name: '2 CPU 8 gibibytes RAM' })).toBeChecked()
- await page.getByRole('tab', { name: 'High CPU' }).click()
- await expect(page.getByRole('radio', { name: '2 CPU 4 gibibytes RAM' })).toBeChecked()
- await page.getByRole('tab', { name: 'High Memory' }).click()
- await expect(page.getByRole('radio', { name: '2 CPU 16 gibibytes RAM' })).toBeChecked()
- await page.getByRole('tab', { name: 'General Purpose' }).click()
- await expect(page.getByRole('radio', { name: '2 CPU 8 gibibytes RAM' })).toBeChecked()
-})
-
test('can create an instance with custom hardware', async ({ page }) => {
await page.goto('/projects/mock-project/instances-new')
@@ -208,12 +199,6 @@ test('can create an instance with custom hardware', async ({ page }) => {
await page.fill('input[name=name]', instanceName)
await page.fill('textarea[name=description]', 'An instance... from space!')
- // Click the other tabs to make sure the custom input works
- // even when something has been previously selected
- await page.getByRole('tab', { name: 'High CPU' }).click()
- await page.getByRole('tab', { name: 'High Memory' }).click()
- await page.getByText('64 GiB RAM').click()
-
// Fill in custom specs
await page.getByRole('tab', { name: 'Custom' }).click()
await page.getByRole('textbox', { name: 'CPUs' }).fill('29')