diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml
index da75ef05c3..50243fbb21 100644
--- a/.github/workflows/qc_checks.yaml
+++ b/.github/workflows/qc_checks.yaml
@@ -414,7 +414,7 @@ jobs:
- name: Set up test data
run: invoke setup-test -i
- name: Install dependencies
- run: cd src/frontend && yarn install
+ run: inv frontend-compile
- name: Install Playwright Browsers
run: cd src/frontend && npx playwright install --with-deps
- name: Run Playwright tests
diff --git a/src/frontend/playwright.config.ts b/src/frontend/playwright.config.ts
index c562939632..d0e1ded854 100644
--- a/src/frontend/playwright.config.ts
+++ b/src/frontend/playwright.config.ts
@@ -6,7 +6,7 @@ export default defineConfig({
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 1 : 0,
workers: process.env.CI ? 2 : undefined,
- reporter: 'html',
+ reporter: process.env.CI ? 'github' : 'list',
/* Configure projects for major browsers */
projects: [
diff --git a/src/frontend/src/components/forms/AuthFormOptions.tsx b/src/frontend/src/components/forms/AuthFormOptions.tsx
new file mode 100644
index 0000000000..373d090bd5
--- /dev/null
+++ b/src/frontend/src/components/forms/AuthFormOptions.tsx
@@ -0,0 +1,25 @@
+import { Center, Group, Tooltip } from '@mantine/core';
+import { IconServer } from '@tabler/icons-react';
+
+import { ColorToggle } from '../items/ColorToggle';
+import { LanguageToggle } from '../items/LanguageToggle';
+
+export function AuthFormOptions({
+ hostname,
+ toggleHostEdit
+}: {
+ hostname: string;
+ toggleHostEdit: () => void;
+}) {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/frontend/src/components/forms/AuthenticationForm.tsx b/src/frontend/src/components/forms/AuthenticationForm.tsx
index ed652fd5d1..53f9995b40 100644
--- a/src/frontend/src/components/forms/AuthenticationForm.tsx
+++ b/src/frontend/src/components/forms/AuthenticationForm.tsx
@@ -16,19 +16,8 @@ import { IconCheck } from '@tabler/icons-react';
import { useNavigate } from 'react-router-dom';
import { doClassicLogin, doSimpleLogin } from '../../functions/auth';
-import { EditButton } from '../items/EditButton';
-export function AuthenticationForm({
- hostname,
- editing,
- setEditing,
- selectElement
-}: {
- hostname: string;
- editing: boolean;
- setEditing: (value?: React.SetStateAction | undefined) => void;
- selectElement: JSX.Element;
-}) {
+export function AuthenticationForm() {
const classicForm = useForm({
initialValues: { username: '', password: '' }
});
@@ -82,10 +71,7 @@ export function AuthenticationForm({
return (
-
- {!editing ? hostname : selectElement}
-
-
+ Welcome, log in below
);
}
+
+function DisplaySettings({ height }: { height: number }) {
+ function enablePseudoLang(): void {
+ useLocalState.setState({ language: 'pseudo-LOCALE' });
+ }
+
+ return (
+
+
+ Display Settings
+
+
+
+ Color Mode
+
+
+
+
+
+ Language
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/frontend/src/states/LocalState.tsx b/src/frontend/src/states/LocalState.tsx
index 597f1a861c..a1b8c390a3 100644
--- a/src/frontend/src/states/LocalState.tsx
+++ b/src/frontend/src/states/LocalState.tsx
@@ -13,7 +13,9 @@ interface LocalStateProps {
setHost: (newHost: string, newHostKey: string) => void;
hostKey: string;
hostList: HostList;
+ setHostList: (newHostList: HostList) => void;
language: Locales;
+ setLanguage: (newLanguage: Locales) => void;
// theme
primaryColor: string;
whiteColor: string;
@@ -33,7 +35,9 @@ export const useLocalState = create()(
set({ host: newHost, hostKey: newHostKey }),
hostKey: '',
hostList: {},
+ setHostList: (newHostList) => set({ hostList: newHostList }),
language: 'en',
+ setLanguage: (newLanguage) => set({ language: newLanguage }),
//theme
primaryColor: 'indigo',
whiteColor: '#fff',
diff --git a/tasks.py b/tasks.py
index 6e57c3ade5..0636d48090 100644
--- a/tasks.py
+++ b/tasks.py
@@ -129,7 +129,7 @@ def node_available(versions: bool = False, bypass_yarn: bool = False):
print('Node is available but yarn is not. Install yarn if you wish to build the frontend.')
# Return the result
- return ret((not yarn_passes or not node_version), node_version, yarn_version)
+ return ret(yarn_passes and node_version, node_version, yarn_version)
def check_file_existance(filename: str, overwrite: bool = False):