ci: cypres test setup(#274)

* fix: font size broken

* add first cypress test

* save onboarding language

* load language

* get first test to work

* update command

* install pnpm

* update workflow

* install

* update

* test

* increase timeout

* another update

* update 2

* update 3

* upsdada 4

* sfgsfgf 5

* add def supabase url

* fix supabase issue

* add ci

* fix ci

* update .env.example

* update port

* tired

* prepare

* preview

* this is it

* ?????

* 99999900

* fix log issue

* ci

* nkkh

* =====

* 200000
This commit is contained in:
Rotimi Best
2024-04-20 04:39:16 +01:00
committed by GitHub
parent 4f9844bdd2
commit a95be6d620
19 changed files with 827 additions and 65 deletions
+7
View File
@@ -24,3 +24,10 @@ PUBLIC_SERVER_URL=
# For getting metadata for signup users.
PUBLIC_IP_REGISTRY_KEY=
# Subdomain for admin dashboard
PRIVATE_APP_SUBDOMAINS=app
LEMON_SQUEEZY_API_KEY=
LEMON_SQUEEZY_STORE_ID=
LEMON_SQUEEZY_WEBHOOK_SECRET=
+2 -1
View File
@@ -15,7 +15,8 @@
"start": "node build",
"prepare": "svelte-kit sync",
"test": "jest",
"test:watch": "pnpm run test --watch"
"test:watch": "pnpm run test --watch",
"ci": "cp .env.example .env && vite build && vite preview"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.386.0",
-5
View File
@@ -1,5 +0,0 @@
export default {
supabaseConfig: {
bucketPath: 'https://tapaozmyjsuykgerrfkt.supabase.in/storage/v1/object/sign/'
}
};
@@ -33,7 +33,7 @@
{:else if hasAtLeastOneTranslation}
<Box className="text-center">
<AlignBoxTopLeft class="carbon-icon" size={32} />
<h3 class="text-md font-normal dark:text-white py-2">
<h3 class="text-lg font-normal dark:text-white py-2">
{$t('course.navItem.lessons.materials.no_translation')}
</h3>
</Box>
@@ -83,7 +83,6 @@
const content = $lessonByTranslation[lessonId][locale];
if (typeof localeExists[locale] === 'undefined') {
console.log('find the language');
const { data } = await supabase
.from('lesson_language')
.select(`id`)
@@ -142,9 +141,6 @@
materials: LessonPage['materials'],
translation: Record<LOCALE, string>
) {
console.log('isMaterialsEmpty', {
translation
});
const { slide_url, videos, note } = materials;
return (
@@ -249,11 +245,10 @@
isSaving = true;
timeoutId = setTimeout(async () => {
console.log('autosaving');
const { error } = await saveLesson(updatedMaterials);
if (error) {
console.log('error saving lesson', error);
console.error('error saving lesson', error);
snackbar.error('snackbar.materials.apology');
}
isSaving = false;
+9
View File
@@ -0,0 +1,9 @@
import { PUBLIC_SUPABASE_ANON_KEY, PUBLIC_SUPABASE_URL } from '$env/static/public';
import type { ConfigType } from '$lib/utils/types/config';
export const config: ConfigType = {
supabaseConfig: {
url: PUBLIC_SUPABASE_URL || 'http://localhost:54321',
anonKey: PUBLIC_SUPABASE_ANON_KEY || 'anon-key'
}
};
@@ -1,6 +1,6 @@
import { PUBLIC_SUPABASE_URL } from '$env/static/public';
import { PRIVATE_SUPABASE_SERVICE_ROLE } from '$env/static/private';
import { createClient, SupabaseClient } from '@supabase/supabase-js';
import { config } from '$lib/config';
export let supabase: SupabaseClient;
@@ -12,7 +12,7 @@ export let supabase: SupabaseClient;
export const getServerSupabase = () => {
if (supabase) return supabase;
supabase = createClient(PUBLIC_SUPABASE_URL, PRIVATE_SUPABASE_SERVICE_ROLE, {
supabase = createClient(config.supabaseConfig.url, PRIVATE_SUPABASE_SERVICE_ROLE || '', {
auth: {
persistSession: false,
autoRefreshToken: false,
@@ -1,17 +1,10 @@
import { PUBLIC_SUPABASE_ANON_KEY, PUBLIC_SUPABASE_URL } from '$env/static/public';
import { createClient, SupabaseClient } from '@supabase/supabase-js';
import type { ConfigType } from '../types';
import { config } from '$lib/config';
export let supabase: SupabaseClient;
export const getSupabase = (config?: ConfigType) => {
export const getSupabase = () => {
if (supabase) return supabase;
config = {
supabaseConfig: {
url: PUBLIC_SUPABASE_URL || '',
anonKey: PUBLIC_SUPABASE_ANON_KEY || ''
}
};
supabase = createClient(config.supabaseConfig.url, config.supabaseConfig.anonKey);
+6 -4
View File
@@ -5,6 +5,7 @@ import { getCurrentOrg } from '$lib/utils/services/org';
import { getSupabase, supabase } from '$lib/utils/functions/supabase';
import { loadTranslations } from '$lib/utils/functions/translations';
import type { CurrentOrg } from '$lib/utils/types/org';
import { PRIVATE_APP_SUBDOMAINS } from '$env/static/private';
if (!supabase) {
getSupabase();
@@ -32,6 +33,8 @@ export const load = async ({ url, cookies }): Promise<LoadOutput> => {
const matches = url.host.match(/([a-z 0-9 -]+).*classroomio[.]com/);
const subdomain = matches?.[1] ?? '';
const isDev = dev || url.host.includes('localhost');
if (!url.host.includes('.classroomio.com') && !url.host.includes('localhost')) {
// TODO: We can verify if custom domain here
return response;
@@ -43,14 +46,13 @@ export const load = async ({ url, cookies }): Promise<LoadOutput> => {
response.isOrgSite = debugMode || answer;
response.orgSiteName = debugMode ? _orgSiteName : subdomain;
response.org = (await getCurrentOrg(response.orgSiteName, true)) || null;
if (!response.org && !dev) {
if (!response.org && !isDev) {
throw redirect(307, 'https://app.classroomio.com/404?type=org');
}
} else if (subdomain === 'play' || debugPlay === 'true') {
response.skipAuth = true;
} else if (subdomain !== 'app' && !dev) {
} else if (PRIVATE_APP_SUBDOMAINS.split(',').includes(subdomain) && !isDev) {
throw redirect(307, 'https://app.classroomio.com');
}
@@ -67,7 +69,7 @@ function getInitialLocale(): string {
if (browser) {
try {
return window.navigator.language.split('-')[0];
} catch(e) {
} catch (e) {
return 'en';
}
}
-3
View File
@@ -218,11 +218,8 @@
$globalStore.isDark = localStorage.getItem('mode') === 'dark';
toggleBodyByMode($globalStore.isDark);
const theme = localStorage.getItem('theme');
if (data.isOrgSite && data.org?.theme) {
setTheme(data.org?.theme);
} else if (theme) {
setTheme(theme);
}
}
@@ -16,7 +16,8 @@
triggerSendEmail,
NOTIFICATION_NAME
} from '$lib/utils/services/notification/notification';
import { t } from '$lib/utils/functions/translations';
import { handleLocaleChange, t } from '$lib/utils/functions/translations';
import { LOCALE } from '$lib/utils/types';
interface OnboardingField {
fullname?: string;
@@ -201,6 +202,13 @@
if (fields.fullname) {
$profile.fullname = fields.fullname;
}
if (fields.locale) {
$profile.locale = fields.locale;
if (fields.locale !== LOCALE.EN) {
handleLocaleChange(fields.locale);
}
}
triggerSendEmail(NOTIFICATION_NAME.VERIFY_EMAIL, {
to: $profile.email,
profileId: $profile.id,
@@ -286,7 +294,6 @@
isRequired
/>
</div>
|
{:else}
<!-- Goal/Source Question -->
<div id="goal-question" class="flex items-center flex-col mb-6">