mirror of
https://github.com/logos-storage/logos-storage-modules-e2e.git
synced 2026-06-13 19:09:27 +00:00
add test setup scripts
This commit is contained in:
parent
8d8866d724
commit
17eb342fa0
3
README.md
Normal file
3
README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Logos Storage Modules E2E Tests
|
||||
|
||||
End-to-end testing harness for running UI tests on the Logos Storage module stack.
|
||||
23
run-tests.sh
Normal file
23
run-tests.sh
Normal file
@ -0,0 +1,23 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
source "./scripts/logos.sh"
|
||||
source "./scripts/github.sh"
|
||||
|
||||
LOGOS_QT_MCP_REPO="${LOGOS_QT_MCP_REPO:-logos-co/logos-qt-mcp}"
|
||||
|
||||
gh_clone "logos-co/logos-basecamp" "${BASECAMP_RELEASE_OR_BRANCH:-latest}"
|
||||
gh_clone "logos-co/logos-storage-module" "${CORE_RELEASE_OR_BRANCH:-latest}"
|
||||
gh_clone "logos-co/logos-storage-ui" "${UI_RELEASE_OR_BRANCH:-latest}"
|
||||
|
||||
# Allows overriding LOGOS_QT_MCP with a custom repo/tag/branch.
|
||||
LOGOS_QT_MCP=$(gh_clone "${LOGOS_QT_MCP_REPO}" "${LOGOS_QT_MCP_RELEASE_OR_BRANCH:-latest}")
|
||||
|
||||
BASECAMP_BINARY=$(lg_build_local_basecamp)
|
||||
STORAGE_CORE_LGX=$(lg_build_local_lgx "logos-storage-module")
|
||||
STORAGE_UI_LGX=$(lg_build_storage_ui_lgx "logos-storage-ui")
|
||||
|
||||
export LOGOS_QT_MCP
|
||||
export STORAGE_CORE_LGX
|
||||
export STORAGE_UI_LGX
|
||||
|
||||
node tests/logos-ui-module-tests.mjs --ci "${BASECAMP_BINARY}" --xvfb
|
||||
3
scripts/common.sh
Normal file
3
scripts/common.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echoerr() { echo "$@" >&2; }
|
||||
45
scripts/github.sh
Normal file
45
scripts/github.sh
Normal file
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "${SOURCE_DIR}/common.sh"
|
||||
|
||||
gh_latest_release() {
|
||||
local repo_slug="$1"
|
||||
local api_url="https://api.github.com/repos/${repo_slug}"
|
||||
local latest_release
|
||||
latest_release=$(curl -fsSL "${api_url}/releases/latest" | jq -r '.tag_name')
|
||||
|
||||
if [[ -z "${latest_release}" || "${latest_release}" == "null" ]]; then
|
||||
echoerr "Error: could not determine latest release for ${repo_slug}" >&2
|
||||
return 1
|
||||
fi
|
||||
echoerr "Latest release of ${repo_slug}: ${latest_release}"
|
||||
echo "${latest_release}"
|
||||
}
|
||||
|
||||
gh_clone() {
|
||||
local repo_slug="$1"
|
||||
local branch_or_tag="$2"
|
||||
local repo_name="${repo_slug##*/}"
|
||||
local api_url="https://api.github.com/repos/${repo_slug}"
|
||||
local dest="${LOGOS_BASE}/${repo_name}"
|
||||
|
||||
if [[ -z "${branch_or_tag}" || "${branch_or_tag}" == "latest" ]]; then
|
||||
branch_or_tag=$(gh_latest_release "${repo_slug}") || return 1
|
||||
fi
|
||||
|
||||
echoerr "Cloning ${repo_slug}: ${branch_or_tag}"
|
||||
|
||||
if [[ -d "${dest}" ]]; then
|
||||
echoerr "Removing existing ${dest}"
|
||||
rm -rf "${dest}"
|
||||
fi
|
||||
|
||||
mkdir -p "$(dirname "${dest}")"
|
||||
git clone --depth 1 --branch "${branch_or_tag}" \
|
||||
"https://github.com/${repo_slug}.git" "${dest}"
|
||||
|
||||
echoerr "Cloned ${repo_slug}@${branch_or_tag} into ${dest}"
|
||||
echo "${dest}"
|
||||
}
|
||||
62
scripts/logos.sh
Normal file
62
scripts/logos.sh
Normal file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "${SOURCE_DIR}/common.sh"
|
||||
|
||||
LOGOS_BASE="$(cd "${SOURCE_DIR}/.." && pwd)/logos"
|
||||
export LOGOS_BASE
|
||||
|
||||
mkdir -p "${LOGOS_BASE}"
|
||||
|
||||
_find_lgx() {
|
||||
local matches
|
||||
mapfile -t matches < <(find -L ./ -type f -name "*.lgx")
|
||||
if (( ${#matches[@]} != 1 )); then
|
||||
echoerr "Expected exactly 1 LGX file, found ${#matches[@]}"
|
||||
return 1
|
||||
fi
|
||||
realpath "${matches[0]}"
|
||||
}
|
||||
|
||||
lg_build_local_basecamp() {
|
||||
if [[ -z "${LOGOS_QT_MCP:-}" ]]; then
|
||||
echoerr "LOGOS_QT_MCP is not set"
|
||||
return 1
|
||||
fi
|
||||
cd "${LOGOS_BASE}/logos-basecamp" || return 1
|
||||
nix build --override-input logos-qt-mcp "path:${LOGOS_QT_MCP}" '.#app' || return 1
|
||||
if [ -e ./result/bin/LogosBasecamp ]; then
|
||||
echo "${PWD}/result/bin/LogosBasecamp"
|
||||
else
|
||||
echoerr "No output found"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
lg_build_local_lgx() {
|
||||
local lgx module
|
||||
|
||||
module="$1"
|
||||
cd "${LOGOS_BASE}/${module}" || return 1
|
||||
nix bundle --bundler github:logos-co/nix-bundle-lgx ".#lib" || return 1
|
||||
lgx=$(_find_lgx)
|
||||
echoerr "LGX generated at ${lgx}"
|
||||
echo "${lgx}"
|
||||
}
|
||||
|
||||
lg_build_storage_ui_lgx() {
|
||||
local lgx
|
||||
|
||||
cd "${LOGOS_BASE}/logos-storage-ui" || return 1
|
||||
nix build '.#lgx' || return 1
|
||||
lgx=$(_find_lgx)
|
||||
echoerr "LGX generated at ${lgx}"
|
||||
echo "${lgx}"
|
||||
}
|
||||
|
||||
lg_start_basecamp() {
|
||||
local basecamp
|
||||
basecamp=$(lg_build_local_basecamp) || return 1
|
||||
"${basecamp}" &
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user