messy env stuff

This commit is contained in:
Kurt Hutten Irev-Dev
2024-08-15 11:43:55 +10:00
parent 84521b28f3
commit c3b0c64d6c
6 changed files with 56 additions and 19 deletions

View File

@ -7,7 +7,7 @@ test.afterEach(async ({ page }, testInfo) => {
}) })
test( test(
'CRUD projects', 'Rename and delete projects, also spam arrow keys when renaming',
{ tag: '@electron' }, { tag: '@electron' },
async ({ browserName }, testInfo) => { async ({ browserName }, testInfo) => {
const { electronApp, page } = await setupElectron({ const { electronApp, page } = await setupElectron({

View File

@ -640,20 +640,20 @@ export async function setup(
token, token,
settingsKey, settingsKey,
settings, settings,
appSettingsFileKey, // appSettingsFileKey,
appSettingsFileContent, // appSettingsFileContent,
}) => { }) => {
localStorage.setItem('TOKEN_PERSIST_KEY', token) localStorage.setItem('TOKEN_PERSIST_KEY', token)
localStorage.setItem('persistCode', ``) localStorage.setItem('persistCode', ``)
localStorage.setItem(settingsKey, settings) localStorage.setItem(settingsKey, settings)
localStorage.setItem(appSettingsFileKey, appSettingsFileContent) // localStorage.setItem(appSettingsFileKey, appSettingsFileContent)
localStorage.setItem('playwright', 'true') localStorage.setItem('playwright', 'true')
}, },
{ {
token: secrets.token, token: secrets.token,
appSettingsFileKey: TEST_SETTINGS_FILE_KEY, // appSettingsFileKey: TEST_SETTINGS_FILE_KEY,
appSettingsFileContent: // appSettingsFileContent:
overrideDirectory || TEST_SETTINGS.app.projectDirectory, // overrideDirectory || TEST_SETTINGS.app.projectDirectory,
settingsKey: TEST_SETTINGS_KEY, settingsKey: TEST_SETTINGS_KEY,
settings: TOML.stringify({ settings: TOML.stringify({
...TEST_SETTINGS, ...TEST_SETTINGS,
@ -672,9 +672,11 @@ export async function setup(
export async function setupElectron({ export async function setupElectron({
testInfo, testInfo,
folderSetupFn, folderSetupFn,
overrideDirectory,
}: { }: {
testInfo: TestInfo testInfo: TestInfo
folderSetupFn?: (projectDirName: string) => Promise<void> folderSetupFn?: (projectDirName: string) => Promise<void>
overrideDirectory?: string
}) { }) {
// create or otherwise clear the folder // create or otherwise clear the folder
const projectDirName = testInfo.outputPath('electron-test-projects-dir') const projectDirName = testInfo.outputPath('electron-test-projects-dir')
@ -688,7 +690,14 @@ export async function setupElectron({
await fsp.mkdir(projectDirName) await fsp.mkdir(projectDirName)
const electronApp = await electron.launch({ args: ['.', '--no-sandbox'] }) const electronApp = await electron.launch({
args: ['.', '--no-sandbox'],
env: {
...process.env,
TEST_SETTINGS_FILE_KEY:
overrideDirectory || TEST_SETTINGS.app.projectDirectory,
},
})
const context = electronApp.context() const context = electronApp.context()
const page = await electronApp.firstWindow() const page = await electronApp.firstWindow()
context.on('console', console.log) context.on('console', console.log)

View File

@ -579,7 +579,7 @@ export function defaultAppSettings(): Partial<SaveSettingsPayload> {
export function parseAppSettings(toml: string): Partial<SaveSettingsPayload> { export function parseAppSettings(toml: string): Partial<SaveSettingsPayload> {
const parsed = parse_app_settings(toml) const parsed = parse_app_settings(toml)
console.log('within wasm.ts, parsed app settings', parsed) // console.log('within wasm.ts, parsed app settings', parsed)
return configurationToSettingsPayload(parsed) return configurationToSettingsPayload(parsed)
} }

View File

@ -443,7 +443,18 @@ export const readAppSettingsFile = async () => {
} }
const configToml = await window.electron.readFile(settingsPath) const configToml = await window.electron.readFile(settingsPath)
const configObj = parseAppSettings(configToml) const configObj = parseAppSettings(configToml)
const overrideJSON = localStorage.getItem('APP_SETTINGS_OVERRIDE') const overrideJSON = window?.env?.[TEST_SETTINGS_FILE_KEY]
console.log(
'overrideJSON',
overrideJSON,
window.electron,
window.electron.process?.env,
window.electron.process?.env?.TEST_SETTINGS_FILE_KEY,
window.electron.process?.env?.TEST_SETTINGS_FILE_KEY?.(),
window.electron.process?.env?.BASE_URL?.()
// window.electron.process?.env?.BASE_URL
)
// const overrideJSON = localStorage.getItem('APP_SETTINGS_OVERRIDE')
if (overrideJSON) { if (overrideJSON) {
try { try {
const override = JSON.parse(overrideJSON) const override = JSON.parse(overrideJSON)

View File

@ -43,7 +43,10 @@ export type Events =
const COOKIE_NAME = '__Secure-next-auth.session-token' const COOKIE_NAME = '__Secure-next-auth.session-token'
export const TOKEN_PERSIST_KEY = 'TOKEN_PERSIST_KEY' export const TOKEN_PERSIST_KEY = 'TOKEN_PERSIST_KEY'
const persistedToken = const persistedToken =
getCookie(COOKIE_NAME) || localStorage?.getItem(TOKEN_PERSIST_KEY) || '' VITE_KC_DEV_TOKEN ||
getCookie(COOKIE_NAME) ||
localStorage?.getItem(TOKEN_PERSIST_KEY) ||
''
export const authMachine = createMachine<UserContext, Events>( export const authMachine = createMachine<UserContext, Events>(
{ {
@ -59,6 +62,7 @@ export const authMachine = createMachine<UserContext, Events>(
{ {
target: 'loggedIn', target: 'loggedIn',
actions: () => { actions: () => {
console.log('login and shit')
return assign((context, event) => ({ return assign((context, event) => ({
user: event.data.user, user: event.data.user,
token: event.data.token || context.token, token: event.data.token || context.token,
@ -70,6 +74,7 @@ export const authMachine = createMachine<UserContext, Events>(
{ {
target: 'loggedOut', target: 'loggedOut',
actions: (args) => { actions: (args) => {
console.log('logout')
return assign({ return assign({
user: () => undefined, user: () => undefined,
}) })
@ -118,12 +123,14 @@ export const authMachine = createMachine<UserContext, Events>(
) )
async function getUser(context: UserContext) { async function getUser(context: UserContext) {
const token = console.log('getUser context', VITE_KC_DEV_TOKEN, context)
context.token && context.token !== '' const token = VITE_KC_DEV_TOKEN
? context.token ? VITE_KC_DEV_TOKEN
: getCookie(COOKIE_NAME) || : context.token && context.token !== ''
localStorage?.getItem(TOKEN_PERSIST_KEY) || ? context.token
VITE_KC_DEV_TOKEN : VITE_KC_DEV_TOKEN ||
getCookie(COOKIE_NAME) ||
localStorage?.getItem(TOKEN_PERSIST_KEY)
const url = withBaseURL('/user') const url = withBaseURL('/user')
const headers: { [key: string]: string } = { const headers: { [key: string]: string } = {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
@ -138,6 +145,10 @@ async function getUser(context: UserContext) {
LOCAL_USER.image = '' LOCAL_USER.image = ''
} }
console.log('skip', {
user: LOCAL_USER,
token,
})
return { return {
user: LOCAL_USER, user: LOCAL_USER,
token, token,

View File

@ -1,10 +1,12 @@
import { ipcRenderer, contextBridge } from 'electron' import { ipcRenderer, contextBridge } from 'electron'
import path from 'path' import path from 'path'
import fs from 'node:fs/promises' import fs from 'node:fs/promises'
import packageJson from '../../package.json' import packageJson from '../package.json'
import { components } from 'lib/machine-api' import { components } from 'lib/machine-api'
import { MachinesListing } from 'lib/machineManager' import { MachinesListing } from 'lib/machineManager'
console.log('preload.ts loaded', packageJson)
const open = (args: any) => ipcRenderer.invoke('dialog.showOpenDialog', args) const open = (args: any) => ipcRenderer.invoke('dialog.showOpenDialog', args)
const save = (args: any) => ipcRenderer.invoke('dialog.showSaveDialog', args) const save = (args: any) => ipcRenderer.invoke('dialog.showSaveDialog', args)
const openExternal = (url: any) => ipcRenderer.invoke('shell.openExternal', url) const openExternal = (url: any) => ipcRenderer.invoke('shell.openExternal', url)
@ -81,7 +83,11 @@ contextBridge.exposeInMainWorld('electron', {
process: { process: {
// Setter/getter has to be created because // Setter/getter has to be created because
// these are read-only over the boundary. // these are read-only over the boundary.
env: Object.assign({}, exposeProcessEnv('BASE_URL')), env: Object.assign(
{},
exposeProcessEnv('BASE_URL'),
exposeProcessEnv('TEST_SETTINGS_FILE_KEY')
),
}, },
kittycad, kittycad,
listMachines, listMachines,