Merge branch 'master' into validate-cluster-model
6
.adr.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"language": "en",
|
||||||
|
"path": "docs/architecture/decisions/",
|
||||||
|
"prefix": "",
|
||||||
|
"digits": 4
|
||||||
|
}
|
||||||
@ -1,57 +0,0 @@
|
|||||||
variables:
|
|
||||||
YARN_CACHE_FOLDER: $(Pipeline.Workspace)/.yarn
|
|
||||||
node_version: 12.x
|
|
||||||
pr:
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- master
|
|
||||||
- releases/*
|
|
||||||
paths:
|
|
||||||
exclude:
|
|
||||||
- .github/*
|
|
||||||
- docs/*
|
|
||||||
- mkdocs/*
|
|
||||||
trigger: none
|
|
||||||
jobs:
|
|
||||||
- job: Linux
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-18.04
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
kube_1.16:
|
|
||||||
kubernetes_version: v1.16.15
|
|
||||||
kube_1.17:
|
|
||||||
kubernetes_version: v1.17.15
|
|
||||||
kube_1.18:
|
|
||||||
kubernetes_version: v1.18.13
|
|
||||||
kube_1.19:
|
|
||||||
kubernetes_version: v1.19.5
|
|
||||||
kube_1.20:
|
|
||||||
kubernetes_version: v1.20.0
|
|
||||||
steps:
|
|
||||||
- task: NodeTool@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: $(node_version)
|
|
||||||
displayName: Install Node.js
|
|
||||||
- task: Cache@2
|
|
||||||
inputs:
|
|
||||||
key: 'yarn | "$(Agent.OS)" | yarn.lock'
|
|
||||||
restoreKeys: |
|
|
||||||
yarn | "$(Agent.OS)"
|
|
||||||
path: $(YARN_CACHE_FOLDER)
|
|
||||||
displayName: Cache Yarn packages
|
|
||||||
- bash: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install libgconf-2-4 conntrack -y
|
|
||||||
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
|
|
||||||
sudo install minikube-linux-amd64 /usr/local/bin/minikube
|
|
||||||
sudo minikube start --driver=none --kubernetes-version $(kubernetes_version)
|
|
||||||
sudo mv /root/.kube /root/.minikube $HOME
|
|
||||||
sudo chown -R $USER $HOME/.kube $HOME/.minikube
|
|
||||||
displayName: Install integration test dependencies
|
|
||||||
- script: make node_modules
|
|
||||||
displayName: Install dependencies
|
|
||||||
- script: make -j2 build
|
|
||||||
displayName: Run build
|
|
||||||
- script: xvfb-run --auto-servernum --server-args='-screen 0, 1600x900x24' yarn integration
|
|
||||||
displayName: Run integration tests for Kubernetes $(kubernetes_version)
|
|
||||||
@ -1,167 +0,0 @@
|
|||||||
variables:
|
|
||||||
YARN_CACHE_FOLDER: $(Pipeline.Workspace)/.yarn
|
|
||||||
pr: none
|
|
||||||
trigger:
|
|
||||||
tags:
|
|
||||||
include:
|
|
||||||
- "*"
|
|
||||||
paths:
|
|
||||||
exclude:
|
|
||||||
- .github/*
|
|
||||||
- docs/*
|
|
||||||
- mkdocs/*
|
|
||||||
jobs:
|
|
||||||
- job: Windows
|
|
||||||
pool:
|
|
||||||
vmImage: windows-2019
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node:
|
|
||||||
node_version: 16.x
|
|
||||||
steps:
|
|
||||||
- powershell: |
|
|
||||||
$CI_BUILD_TAG = git describe --tags
|
|
||||||
Write-Output ("##vso[task.setvariable variable=CI_BUILD_TAG;]$CI_BUILD_TAG")
|
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
|
||||||
displayName: Set the tag name as an environment variable
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: $(node_version)
|
|
||||||
displayName: Install Node.js
|
|
||||||
|
|
||||||
- task: Cache@2
|
|
||||||
inputs:
|
|
||||||
key: 'yarn | "$(Agent.OS)"" | yarn.lock'
|
|
||||||
restoreKeys: |
|
|
||||||
yarn | "$(Agent.OS)"
|
|
||||||
path: $(YARN_CACHE_FOLDER)
|
|
||||||
displayName: Cache Yarn packages
|
|
||||||
|
|
||||||
- bash: |
|
|
||||||
set -e
|
|
||||||
git clone "https://${GH_TOKEN}@github.com/lensapp/lens-ide.git" .lens-ide-overlay
|
|
||||||
rm -rf .lens-ide-overlay/.git
|
|
||||||
cp -r .lens-ide-overlay/* ./
|
|
||||||
jq -s '.[0] * .[1]' package.json package.ide.json > package.custom.json && mv package.custom.json package.json
|
|
||||||
env:
|
|
||||||
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
|
||||||
displayName: Customize config
|
|
||||||
|
|
||||||
- script: make build
|
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
|
||||||
env:
|
|
||||||
WIN_CSC_LINK: $(WIN_CSC_LINK)
|
|
||||||
WIN_CSC_KEY_PASSWORD: $(WIN_CSC_KEY_PASSWORD)
|
|
||||||
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
|
||||||
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
|
||||||
BUILD_NUMBER: $(Build.BuildNumber)
|
|
||||||
ELECTRON_BUILDER_EXTRA_ARGS: "--x64 --ia32"
|
|
||||||
displayName: Build
|
|
||||||
|
|
||||||
- job: macOS
|
|
||||||
pool:
|
|
||||||
vmImage: macOS-11
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node:
|
|
||||||
node_version: 16.x
|
|
||||||
steps:
|
|
||||||
- script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
|
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
|
||||||
displayName: Set the tag name as an environment variable
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: $(node_version)
|
|
||||||
displayName: Install Node.js
|
|
||||||
|
|
||||||
- task: Cache@2
|
|
||||||
inputs:
|
|
||||||
key: 'yarn | "$(Agent.OS)" | yarn.lock'
|
|
||||||
restoreKeys: |
|
|
||||||
yarn | "$(Agent.OS)"
|
|
||||||
path: $(YARN_CACHE_FOLDER)
|
|
||||||
displayName: Cache Yarn packages
|
|
||||||
|
|
||||||
- bash: |
|
|
||||||
set -e
|
|
||||||
git clone "https://${GH_TOKEN}@github.com/lensapp/lens-ide.git" .lens-ide-overlay
|
|
||||||
rm -rf .lens-ide-overlay/.git
|
|
||||||
cp -r .lens-ide-overlay/* ./
|
|
||||||
jq -s '.[0] * .[1]' package.json package.ide.json > package.custom.json && mv package.custom.json package.json
|
|
||||||
env:
|
|
||||||
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
|
||||||
displayName: Customize config
|
|
||||||
|
|
||||||
- bash: |
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "Importing codesign certificate ..."
|
|
||||||
echo $CSC_LINK | base64 -D > certificate.p12
|
|
||||||
security create-keychain -p $KEYCHAIN_PASSWORD build.keychain
|
|
||||||
security set-keychain-settings -lut 21600 build.keychain
|
|
||||||
security default-keychain -s build.keychain
|
|
||||||
security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain
|
|
||||||
security import certificate.p12 -k build.keychain -P $CSC_KEY_PASSWORD -T /usr/bin/codesign -T /usr/bin/security -A
|
|
||||||
security set-key-partition-list -S apple-tool:,apple: -k $KEYCHAIN_PASSWORD build.keychain
|
|
||||||
|
|
||||||
rm certificate.p12
|
|
||||||
echo "Codesign certificate imported!"
|
|
||||||
|
|
||||||
make build
|
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
|
||||||
env:
|
|
||||||
KEYCHAIN_PASSWORD: secretz
|
|
||||||
APPLEID: $(APPLEID)
|
|
||||||
APPLEIDPASS: $(APPLEIDPASS)
|
|
||||||
CSC_LINK: $(CSC_LINK)
|
|
||||||
CSC_KEY_PASSWORD: $(CSC_KEY_PASSWORD)
|
|
||||||
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
|
||||||
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
|
||||||
BUILD_NUMBER: $(Build.BuildNumber)
|
|
||||||
ELECTRON_BUILDER_EXTRA_ARGS: "--x64 --arm64"
|
|
||||||
displayName: Build
|
|
||||||
|
|
||||||
- job: Linux
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-18.04
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node:
|
|
||||||
node_version: 16.x
|
|
||||||
steps:
|
|
||||||
- script: CI_BUILD_TAG=`git describe --tags` && echo "##vso[task.setvariable variable=CI_BUILD_TAG]$CI_BUILD_TAG"
|
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
|
||||||
displayName: Set the tag name as an environment variable
|
|
||||||
|
|
||||||
- task: NodeTool@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: $(node_version)
|
|
||||||
displayName: Install Node.js
|
|
||||||
|
|
||||||
- task: Cache@2
|
|
||||||
inputs:
|
|
||||||
key: 'yarn | "$(Agent.OS)" | yarn.lock'
|
|
||||||
restoreKeys: |
|
|
||||||
yarn | "$(Agent.OS)"
|
|
||||||
path: $(YARN_CACHE_FOLDER)
|
|
||||||
displayName: Cache Yarn packages
|
|
||||||
|
|
||||||
- bash: |
|
|
||||||
set -e
|
|
||||||
git clone "https://${GH_TOKEN}@github.com/lensapp/lens-ide.git" .lens-ide-overlay
|
|
||||||
rm -rf .lens-ide-overlay/.git
|
|
||||||
cp -r .lens-ide-overlay/* ./
|
|
||||||
jq -s '.[0] * .[1]' package.json package.ide.json > package.custom.json && mv package.custom.json package.json
|
|
||||||
env:
|
|
||||||
GH_TOKEN: $(LENS_IDE_GH_TOKEN)
|
|
||||||
displayName: Customize config
|
|
||||||
|
|
||||||
- script: make build
|
|
||||||
condition: "and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))"
|
|
||||||
env:
|
|
||||||
AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID)
|
|
||||||
AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY)
|
|
||||||
BUILD_NUMBER: $(Build.BuildNumber)
|
|
||||||
displayName: Build
|
|
||||||
4
.github/workflows/check-docs.yml
vendored
@ -23,8 +23,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate Extensions API Reference using typedocs
|
- name: Generate Extensions API Reference using typedocs
|
||||||
run: |
|
run: |
|
||||||
yarn install
|
yarn install
|
||||||
yarn typedocs-extensions-api
|
yarn typedocs-extensions-api
|
||||||
|
|
||||||
- name: Verify that the markdown is valid
|
- name: Verify that the markdown is valid
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
2
.github/workflows/electronegativity.yml
vendored
@ -19,7 +19,7 @@ jobs:
|
|||||||
- uses: doyensec/electronegativity-action@v1.1
|
- uses: doyensec/electronegativity-action@v1.1
|
||||||
with:
|
with:
|
||||||
input: src/
|
input: src/
|
||||||
electron-version: "15.5.7"
|
electron-version: "19.0.4"
|
||||||
severity: medium
|
severity: medium
|
||||||
|
|
||||||
- name: Upload sarif
|
- name: Upload sarif
|
||||||
|
|||||||
8
.github/workflows/mkdocs-manual.yml
vendored
@ -16,7 +16,7 @@ jobs:
|
|||||||
- name: Set up Python 3.7
|
- name: Set up Python 3.7
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v2
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: "3.x"
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
@ -28,7 +28,7 @@ jobs:
|
|||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: '${{ github.event.inputs.version }}'
|
ref: "${{ github.event.inputs.version }}"
|
||||||
|
|
||||||
- name: Using Node.js ${{ matrix.node-version }}
|
- name: Using Node.js ${{ matrix.node-version }}
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
@ -43,8 +43,8 @@ jobs:
|
|||||||
- name: Checkout master branch from lens
|
- name: Checkout master branch from lens
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
path: 'master'
|
path: "master"
|
||||||
ref: 'master'
|
ref: "master"
|
||||||
|
|
||||||
- name: Bring in latest mkdocs.yml from master
|
- name: Bring in latest mkdocs.yml from master
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
4
.github/workflows/publish-release-npm.yml
vendored
@ -23,11 +23,11 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate NPM package
|
- name: Generate NPM package
|
||||||
run: |
|
run: |
|
||||||
make build-npm
|
make build-npm
|
||||||
|
|
||||||
- name: publish new release
|
- name: publish new release
|
||||||
if: contains(github.ref, 'refs/tags/v')
|
if: contains(github.ref, 'refs/tags/v')
|
||||||
run: |
|
run: |
|
||||||
make publish-npm
|
make publish-npm
|
||||||
env:
|
env:
|
||||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
|||||||
3
.github/workflows/test.yml
vendored
@ -11,8 +11,9 @@ jobs:
|
|||||||
name: Test
|
name: Test
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-18.04, macos-11, windows-2019]
|
os: [ubuntu-20.04, macos-11, windows-2019]
|
||||||
node-version: [16.x]
|
node-version: [16.x]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Release from lens
|
- name: Checkout Release from lens
|
||||||
|
|||||||
4
.yarnrc
@ -1,3 +1,3 @@
|
|||||||
disturl "https://atom.io/download/electron"
|
disturl "https://electronjs.org/headers"
|
||||||
target "15.5.0"
|
target "19.0.4"
|
||||||
runtime "electron"
|
runtime "electron"
|
||||||
|
|||||||
3
Makefile
@ -17,8 +17,7 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
node_modules: yarn.lock
|
node_modules: yarn.lock
|
||||||
yarn install --frozen-lockfile --network-timeout=100000
|
yarn install --check-files --frozen-lockfile --network-timeout=100000
|
||||||
yarn check --verify-tree --integrity
|
|
||||||
|
|
||||||
binaries/client: node_modules
|
binaries/client: node_modules
|
||||||
yarn download:binaries
|
yarn download:binaries
|
||||||
|
|||||||
@ -3,3 +3,12 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
export default {};
|
export default {};
|
||||||
|
|
||||||
|
export const Uri = {
|
||||||
|
file: (path: string) => path,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const editor = {
|
||||||
|
getModel: () => ({}),
|
||||||
|
create: () => ({}),
|
||||||
|
};
|
||||||
|
|||||||
15
__mocks__/react-beautiful-dnd.tsx
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
import type {
|
||||||
|
DragDropContextProps,
|
||||||
|
DraggableProps,
|
||||||
|
DroppableProps,
|
||||||
|
} from "react-beautiful-dnd";
|
||||||
|
|
||||||
|
export const DragDropContext = ({ children }: DragDropContextProps) => <>{ children }</>;
|
||||||
|
export const Draggable = ({ children }: DraggableProps) => <>{ children }</>;
|
||||||
|
export const Droppable = ({ children }: DroppableProps) => <>{ children }</>;
|
||||||
17
__mocks__/react-virtualized-auto-sizer.tsx
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import React from "react";
|
||||||
|
import type { Size } from "react-virtualized-auto-sizer";
|
||||||
|
|
||||||
|
export default ({ children } : { children: (size: Size) => React.ReactNode }) => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{children({
|
||||||
|
height: 420000,
|
||||||
|
width: 100,
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
@ -13,7 +13,6 @@ import { promisify } from "util";
|
|||||||
import { pipeline as _pipeline, Transform, Writable } from "stream";
|
import { pipeline as _pipeline, Transform, Writable } from "stream";
|
||||||
import type { SingleBar } from "cli-progress";
|
import type { SingleBar } from "cli-progress";
|
||||||
import { MultiBar } from "cli-progress";
|
import { MultiBar } from "cli-progress";
|
||||||
import AbortController from "abort-controller";
|
|
||||||
import { extract } from "tar-stream";
|
import { extract } from "tar-stream";
|
||||||
import gunzip from "gunzip-maybe";
|
import gunzip from "gunzip-maybe";
|
||||||
import { getBinaryName, normalizedPlatform } from "../src/common/vars";
|
import { getBinaryName, normalizedPlatform } from "../src/common/vars";
|
||||||
|
|||||||
@ -12,6 +12,7 @@ const size = Number(process.env.OUTPUT_SIZE || "16");
|
|||||||
const outputFolder = process.env.OUTPUT_DIR || "./build/tray";
|
const outputFolder = process.env.OUTPUT_DIR || "./build/tray";
|
||||||
const inputFile = process.env.INPUT_SVG_PATH || "./src/renderer/components/icon/logo-lens.svg";
|
const inputFile = process.env.INPUT_SVG_PATH || "./src/renderer/components/icon/logo-lens.svg";
|
||||||
const noticeFile = process.env.NOTICE_SVG_PATH || "./src/renderer/components/icon/notice.svg";
|
const noticeFile = process.env.NOTICE_SVG_PATH || "./src/renderer/components/icon/notice.svg";
|
||||||
|
const spinnerFile = process.env.SPINNER_SVG_PATH || "./src/renderer/components/icon/arrow-spinner.svg";
|
||||||
|
|
||||||
async function ensureOutputFoler() {
|
async function ensureOutputFoler() {
|
||||||
await ensureDir(outputFolder);
|
await ensureDir(outputFolder);
|
||||||
@ -58,8 +59,9 @@ async function generateImages(image: Buffer, size: number, name: string) {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function generateUpdateAvailableImages(baseImage: Buffer, system: TargetSystems) {
|
async function generateImageWithSvg(baseImage: Buffer, system: TargetSystems, filePath: string) {
|
||||||
const noticeIconImage = await getNoticeIconImage(system);
|
const svgFile = await getIconImage(system, filePath);
|
||||||
|
|
||||||
const circleBuffer = await sharp(Buffer.from(`
|
const circleBuffer = await sharp(Buffer.from(`
|
||||||
<svg viewBox="0 0 64 64">
|
<svg viewBox="0 0 64 64">
|
||||||
<circle cx="32" cy="32" r="32" fill="black" />
|
<circle cx="32" cy="32" r="32" fill="black" />
|
||||||
@ -78,7 +80,7 @@ async function generateUpdateAvailableImages(baseImage: Buffer, system: TargetSy
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
input: (
|
input: (
|
||||||
await sharp(noticeIconImage)
|
await sharp(svgFile)
|
||||||
.resize({
|
.resize({
|
||||||
width: 60,
|
width: 60,
|
||||||
height: 60,
|
height: 60,
|
||||||
@ -92,8 +94,8 @@ async function generateUpdateAvailableImages(baseImage: Buffer, system: TargetSy
|
|||||||
.toBuffer();
|
.toBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getNoticeIconImage(system: TargetSystems) {
|
async function getIconImage(system: TargetSystems, filePath: string) {
|
||||||
const svgData = await readFile(noticeFile, { encoding: "utf-8" });
|
const svgData = await readFile(filePath, { encoding: "utf-8" });
|
||||||
const root = new JSDOM(svgData).window.document.getElementsByTagName("svg")[0];
|
const root = new JSDOM(svgData).window.document.getElementsByTagName("svg")[0];
|
||||||
|
|
||||||
root.innerHTML += getSvgStyling(system === "macos" ? "light" : "dark");
|
root.innerHTML += getSvgStyling(system === "macos" ? "light" : "dark");
|
||||||
@ -107,18 +109,25 @@ async function generateTrayIcons() {
|
|||||||
await ensureOutputFoler();
|
await ensureOutputFoler();
|
||||||
|
|
||||||
const baseIconTemplateImage = await getBaseIconImage("macos");
|
const baseIconTemplateImage = await getBaseIconImage("macos");
|
||||||
const updateAvailableTemplateImage = await generateUpdateAvailableImages(baseIconTemplateImage, "macos");
|
|
||||||
const baseIconImage = await getBaseIconImage("windows-or-linux");
|
const baseIconImage = await getBaseIconImage("windows-or-linux");
|
||||||
const updateAvailableImage = await generateUpdateAvailableImages(baseIconImage, "windows-or-linux");
|
|
||||||
|
const updateAvailableTemplateImage = await generateImageWithSvg(baseIconTemplateImage, "macos", noticeFile);
|
||||||
|
const updateAvailableImage = await generateImageWithSvg(baseIconImage, "windows-or-linux", noticeFile);
|
||||||
|
|
||||||
|
const checkingForUpdatesTemplateImage = await generateImageWithSvg(baseIconTemplateImage, "macos", spinnerFile);
|
||||||
|
const checkingForUpdatesImage = await generateImageWithSvg(baseIconImage, "windows-or-linux", spinnerFile);
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
// Templates are for macOS only
|
// Templates are for macOS only
|
||||||
generateImages(baseIconTemplateImage, size, "trayIconTemplate"),
|
generateImages(baseIconTemplateImage, size, "trayIconTemplate"),
|
||||||
generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"),
|
generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"),
|
||||||
|
generateImages(updateAvailableTemplateImage, size, "trayIconUpdateAvailableTemplate"),
|
||||||
|
generateImages(checkingForUpdatesTemplateImage, size, "trayIconCheckingForUpdatesTemplate"),
|
||||||
|
|
||||||
// Non-templates are for windows and linux
|
// Non-templates are for windows and linux
|
||||||
generateImages(baseIconImage, size, "trayIcon"),
|
generateImages(baseIconImage, size, "trayIcon"),
|
||||||
generateImages(updateAvailableImage, size, "trayIconUpdateAvailable"),
|
generateImages(updateAvailableImage, size, "trayIconUpdateAvailable"),
|
||||||
|
generateImages(checkingForUpdatesImage, size, "trayIconCheckingForUpdates"),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
console.log("Generated all images");
|
console.log("Generated all images");
|
||||||
|
|||||||
@ -18,7 +18,7 @@ exports.default = async function notarizing(context) {
|
|||||||
const appName = context.packager.appInfo.productFilename;
|
const appName = context.packager.appInfo.productFilename;
|
||||||
|
|
||||||
return await notarize({
|
return await notarize({
|
||||||
appBundleId: "io.kontena.lens-app",
|
appBundleId: process.env.APPBUNDLEID || "io.kontena.lens-app",
|
||||||
appPath: `${appOutDir}/${appName}.app`,
|
appPath: `${appOutDir}/${appName}.app`,
|
||||||
appleId: process.env.APPLEID,
|
appleId: process.env.APPLEID,
|
||||||
appleIdPassword: process.env.APPLEIDPASS,
|
appleIdPassword: process.env.APPLEIDPASS,
|
||||||
|
|||||||
BIN
build/tray/trayIconCheckingForUpdates.png
Normal file
|
After Width: | Height: | Size: 504 B |
BIN
build/tray/trayIconCheckingForUpdates@2x.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
build/tray/trayIconCheckingForUpdates@3x.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
build/tray/trayIconCheckingForUpdates@4x.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
build/tray/trayIconCheckingForUpdatesTemplate.png
Normal file
|
After Width: | Height: | Size: 442 B |
BIN
build/tray/trayIconCheckingForUpdatesTemplate@2x.png
Normal file
|
After Width: | Height: | Size: 993 B |
BIN
build/tray/trayIconCheckingForUpdatesTemplate@3x.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
build/tray/trayIconCheckingForUpdatesTemplate@4x.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
2
docs/architecture/decisions/README.md
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Architecture Decision Records
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ Some of the most-important fields include:
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"homepage": "https://github.com/lensapp/lens-extension-samples",
|
"homepage": "https://github.com/lensapp/lens-extension-samples",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^14.18.12",
|
"node": "^16.14.2",
|
||||||
"lens": "5.4"
|
"lens": "5.4"
|
||||||
},
|
},
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
@ -72,7 +72,7 @@ Some of the most-important fields include:
|
|||||||
"ts-loader": "^8.0.4",
|
"ts-loader": "^8.0.4",
|
||||||
"typescript": "^4.5.5",
|
"typescript": "^4.5.5",
|
||||||
"@types/react": "^17.0.44",
|
"@types/react": "^17.0.44",
|
||||||
"@types/node": "^14.18.12",
|
"@types/node": "^16.14.2",
|
||||||
"webpack": "^4.44.2",
|
"webpack": "^4.44.2",
|
||||||
"webpack-cli": "^3.3.11"
|
"webpack-cli": "^3.3.11"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -119,3 +119,10 @@ rules:
|
|||||||
verbs:
|
verbs:
|
||||||
- list
|
- list
|
||||||
- watch
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- scheduling.k8s.io
|
||||||
|
resources:
|
||||||
|
- priorityclasses
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
|||||||
@ -15,7 +15,7 @@ const {
|
|||||||
forCluster, StatefulSet, DaemonSet, Deployment,
|
forCluster, StatefulSet, DaemonSet, Deployment,
|
||||||
},
|
},
|
||||||
Component: {
|
Component: {
|
||||||
SubTitle, FormSwitch, Switcher, Button,
|
SubTitle, Switch, Button,
|
||||||
},
|
},
|
||||||
} = Renderer;
|
} = Renderer;
|
||||||
|
|
||||||
@ -207,17 +207,14 @@ export class MetricsSettings extends React.Component<MetricsSettingsProps> {
|
|||||||
)}
|
)}
|
||||||
<section>
|
<section>
|
||||||
<SubTitle title="Prometheus" />
|
<SubTitle title="Prometheus" />
|
||||||
<FormSwitch
|
<Switch
|
||||||
control={(
|
disabled={this.featureStates.kubeStateMetrics === undefined || !this.isTogglable}
|
||||||
<Switcher
|
checked={!!this.featureStates.prometheus && this.props.cluster.status.phase == "connected"}
|
||||||
disabled={this.featureStates.kubeStateMetrics === undefined || !this.isTogglable}
|
onChange={checked => this.togglePrometheus(checked)}
|
||||||
checked={!!this.featureStates.prometheus && this.props.cluster.status.phase == "connected"}
|
name="prometheus"
|
||||||
onChange={v => this.togglePrometheus(v.target.checked)}
|
>
|
||||||
name="prometheus"
|
Enable bundled Prometheus metrics stack
|
||||||
/>
|
</Switch>
|
||||||
)}
|
|
||||||
label="Enable bundled Prometheus metrics stack"
|
|
||||||
/>
|
|
||||||
<small className="hint">
|
<small className="hint">
|
||||||
Enable timeseries data visualization (Prometheus stack) for your cluster.
|
Enable timeseries data visualization (Prometheus stack) for your cluster.
|
||||||
</small>
|
</small>
|
||||||
@ -225,17 +222,14 @@ export class MetricsSettings extends React.Component<MetricsSettingsProps> {
|
|||||||
|
|
||||||
<section>
|
<section>
|
||||||
<SubTitle title="Kube State Metrics" />
|
<SubTitle title="Kube State Metrics" />
|
||||||
<FormSwitch
|
<Switch
|
||||||
control={(
|
disabled={this.featureStates.kubeStateMetrics === undefined || !this.isTogglable}
|
||||||
<Switcher
|
checked={!!this.featureStates.kubeStateMetrics && this.props.cluster.status.phase == "connected"}
|
||||||
disabled={this.featureStates.kubeStateMetrics === undefined || !this.isTogglable}
|
onChange={checked => this.toggleKubeStateMetrics(checked)}
|
||||||
checked={!!this.featureStates.kubeStateMetrics && this.props.cluster.status.phase == "connected"}
|
name="kube-state-metrics"
|
||||||
onChange={v => this.toggleKubeStateMetrics(v.target.checked)}
|
>
|
||||||
name="node-exporter"
|
Enable bundled kube-state-metrics stack
|
||||||
/>
|
</Switch>
|
||||||
)}
|
|
||||||
label="Enable bundled kube-state-metrics stack"
|
|
||||||
/>
|
|
||||||
<small className="hint">
|
<small className="hint">
|
||||||
Enable Kubernetes API object metrics for your cluster.
|
Enable Kubernetes API object metrics for your cluster.
|
||||||
Enable this only if you don't have existing kube-state-metrics stack installed.
|
Enable this only if you don't have existing kube-state-metrics stack installed.
|
||||||
@ -244,17 +238,14 @@ export class MetricsSettings extends React.Component<MetricsSettingsProps> {
|
|||||||
|
|
||||||
<section>
|
<section>
|
||||||
<SubTitle title="Node Exporter" />
|
<SubTitle title="Node Exporter" />
|
||||||
<FormSwitch
|
<Switch
|
||||||
control={(
|
disabled={this.featureStates.nodeExporter === undefined || !this.isTogglable}
|
||||||
<Switcher
|
checked={!!this.featureStates.nodeExporter && this.props.cluster.status.phase == "connected"}
|
||||||
disabled={this.featureStates.nodeExporter === undefined || !this.isTogglable}
|
onChange={checked => this.toggleNodeExporter(checked)}
|
||||||
checked={!!this.featureStates.nodeExporter && this.props.cluster.status.phase == "connected"}
|
name="node-exporter"
|
||||||
onChange={v => this.toggleNodeExporter(v.target.checked)}
|
>
|
||||||
name="node-exporter"
|
Enable bundled node-exporter stack
|
||||||
/>
|
</Switch>
|
||||||
)}
|
|
||||||
label="Enable bundled node-exporter stack"
|
|
||||||
/>
|
|
||||||
<small className="hint">
|
<small className="hint">
|
||||||
Enable node level metrics for your cluster.
|
Enable node level metrics for your cluster.
|
||||||
Enable this only if you don't have existing node-exporter stack installed.
|
Enable this only if you don't have existing node-exporter stack installed.
|
||||||
@ -262,20 +253,22 @@ export class MetricsSettings extends React.Component<MetricsSettingsProps> {
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<Button
|
<div>
|
||||||
label={this.buttonLabel}
|
<Button
|
||||||
waiting={this.inProgress}
|
primary
|
||||||
onClick={() => this.save()}
|
label={this.buttonLabel}
|
||||||
primary
|
waiting={this.inProgress}
|
||||||
disabled={!this.changed}
|
onClick={() => this.save()}
|
||||||
className="w-60 h-14"
|
disabled={!this.changed}
|
||||||
/>
|
style={{ width: "20ch", padding: "0.5rem" }}
|
||||||
|
/>
|
||||||
|
|
||||||
{this.canUpgrade && (
|
{this.canUpgrade && (
|
||||||
<small className="hint">
|
<small className="hint">
|
||||||
An update is available for enabled metrics components.
|
An update is available for enabled metrics components.
|
||||||
</small>
|
</small>
|
||||||
)}
|
)}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
import type { ElectronApplication, Page } from "playwright";
|
import type { ElectronApplication, Page } from "playwright";
|
||||||
import * as utils from "../helpers/utils";
|
import * as utils from "../helpers/utils";
|
||||||
import { isWindows } from "../../src/common/vars";
|
|
||||||
|
|
||||||
describe("preferences page tests", () => {
|
describe("preferences page tests", () => {
|
||||||
let window: Page, cleanup: () => Promise<void>;
|
let window: Page, cleanup: () => Promise<void>;
|
||||||
@ -34,8 +33,7 @@ describe("preferences page tests", () => {
|
|||||||
await cleanup();
|
await cleanup();
|
||||||
}, 10*60*1000);
|
}, 10*60*1000);
|
||||||
|
|
||||||
// skip on windows due to suspected playwright issue with Electron 14
|
it('shows "preferences" and can navigate through the tabs', async () => {
|
||||||
utils.itIf(!isWindows)('shows "preferences" and can navigate through the tabs', async () => {
|
|
||||||
const pages = [
|
const pages = [
|
||||||
{
|
{
|
||||||
id: "application",
|
id: "application",
|
||||||
|
|||||||
@ -113,13 +113,13 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => {
|
|||||||
await frame.waitForSelector(".LogList .list span.active");
|
await frame.waitForSelector(".LogList .list span.active");
|
||||||
|
|
||||||
const showTimestampsButton = await frame.waitForSelector(
|
const showTimestampsButton = await frame.waitForSelector(
|
||||||
".LogControls .show-timestamps",
|
"[data-testid='log-controls'] .show-timestamps",
|
||||||
);
|
);
|
||||||
|
|
||||||
await showTimestampsButton.click();
|
await showTimestampsButton.click();
|
||||||
|
|
||||||
const showPreviousButton = await frame.waitForSelector(
|
const showPreviousButton = await frame.waitForSelector(
|
||||||
".LogControls .show-previous",
|
"[data-testid='log-controls'] .show-previous",
|
||||||
);
|
);
|
||||||
|
|
||||||
await showPreviousButton.click();
|
await showPreviousButton.click();
|
||||||
|
|||||||
@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
import type { ElectronApplication, Page } from "playwright";
|
import type { ElectronApplication, Page } from "playwright";
|
||||||
import * as utils from "../helpers/utils";
|
import * as utils from "../helpers/utils";
|
||||||
import { isWindows } from "../../src/common/vars";
|
|
||||||
|
|
||||||
describe("Lens command palette", () => {
|
describe("Lens command palette", () => {
|
||||||
let window: Page, cleanup: () => Promise<void>, app: ElectronApplication;
|
let window: Page, cleanup: () => Promise<void>, app: ElectronApplication;
|
||||||
@ -20,8 +19,7 @@ describe("Lens command palette", () => {
|
|||||||
}, 10*60*1000);
|
}, 10*60*1000);
|
||||||
|
|
||||||
describe("menu", () => {
|
describe("menu", () => {
|
||||||
// skip on windows due to suspected playwright issue with Electron 14
|
it("opens command dialog from menu", async () => {
|
||||||
utils.itIf(!isWindows)("opens command dialog from menu", async () => {
|
|
||||||
await app.evaluate(async ({ app }) => {
|
await app.evaluate(async ({ app }) => {
|
||||||
await app.applicationMenu
|
await app.applicationMenu
|
||||||
?.getMenuItemById("view")
|
?.getMenuItemById("view")
|
||||||
|
|||||||
143
package.json
@ -3,7 +3,7 @@
|
|||||||
"productName": "OpenLens",
|
"productName": "OpenLens",
|
||||||
"description": "OpenLens - Open Source IDE for Kubernetes",
|
"description": "OpenLens - Open Source IDE for Kubernetes",
|
||||||
"homepage": "https://github.com/lensapp/lens",
|
"homepage": "https://github.com/lensapp/lens",
|
||||||
"version": "5.6.0-alpha.3",
|
"version": "6.0.0",
|
||||||
"main": "static/build/main.js",
|
"main": "static/build/main.js",
|
||||||
"copyright": "© 2022 OpenLens Authors",
|
"copyright": "© 2022 OpenLens Authors",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -12,6 +12,10 @@
|
|||||||
"email": "info@k8slens.dev"
|
"email": "info@k8slens.dev"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"adr:create": "echo \"What is the title?\"; read title; adr new \"$title\"",
|
||||||
|
"adr:change-status": "echo \"Decision number?:\"; read decision; adr status $decision",
|
||||||
|
"adr:update-readme": "adr update",
|
||||||
|
"adr:list": "adr list",
|
||||||
"dev": "concurrently -i -k \"yarn run dev-run -C\" yarn:dev:*",
|
"dev": "concurrently -i -k \"yarn run dev-run -C\" yarn:dev:*",
|
||||||
"dev-build": "concurrently yarn:compile:*",
|
"dev-build": "concurrently yarn:compile:*",
|
||||||
"debug-build": "concurrently yarn:compile:main yarn:compile:extension-types",
|
"debug-build": "concurrently yarn:compile:main yarn:compile:extension-types",
|
||||||
@ -21,7 +25,7 @@
|
|||||||
"compile": "env NODE_ENV=production concurrently yarn:compile:*",
|
"compile": "env NODE_ENV=production concurrently yarn:compile:*",
|
||||||
"compile:main": "yarn run webpack --config webpack/main.ts",
|
"compile:main": "yarn run webpack --config webpack/main.ts",
|
||||||
"compile:renderer": "yarn run webpack --config webpack/renderer.ts",
|
"compile:renderer": "yarn run webpack --config webpack/renderer.ts",
|
||||||
"compile:extension-types": "yarn run tsc --project tsconfig.extension-api.json",
|
"compile:extension-types": "yarn run webpack --config webpack/extensions.ts",
|
||||||
"npm:fix-build-version": "yarn run ts-node build/set_build_version.ts",
|
"npm:fix-build-version": "yarn run ts-node build/set_build_version.ts",
|
||||||
"npm:fix-package-version": "yarn run ts-node build/set_npm_version.ts",
|
"npm:fix-package-version": "yarn run ts-node build/set_npm_version.ts",
|
||||||
"build:linux": "yarn run compile && electron-builder --linux --dir",
|
"build:linux": "yarn run compile && electron-builder --linux --dir",
|
||||||
@ -43,7 +47,9 @@
|
|||||||
"version-checkout": "cat package.json | jq '.version' -r | xargs printf \"release/v%s\" | xargs git checkout -b",
|
"version-checkout": "cat package.json | jq '.version' -r | xargs printf \"release/v%s\" | xargs git checkout -b",
|
||||||
"version-commit": "cat package.json | jq '.version' -r | xargs printf \"release v%s\" | git commit --no-edit -s -F -",
|
"version-commit": "cat package.json | jq '.version' -r | xargs printf \"release v%s\" | git commit --no-edit -s -F -",
|
||||||
"version": "yarn run version-checkout && git add package.json && yarn run version-commit",
|
"version": "yarn run version-checkout && git add package.json && yarn run version-commit",
|
||||||
"postversion": "git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version"
|
"postversion": "git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version",
|
||||||
|
"precreate-release-pr": "npx swc ./scripts/create-release-pr.ts -o ./scripts/create-release-pr.mjs",
|
||||||
|
"create-release-pr": "node ./scripts/create-release-pr.mjs"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"k8sProxyVersion": "0.2.1",
|
"k8sProxyVersion": "0.2.1",
|
||||||
@ -77,6 +83,7 @@
|
|||||||
"<rootDir>/src/jest.setup.ts",
|
"<rootDir>/src/jest.setup.ts",
|
||||||
"jest-canvas-mock"
|
"jest-canvas-mock"
|
||||||
],
|
],
|
||||||
|
"globalSetup": "<rootDir>/src/jest.timezone.ts",
|
||||||
"setupFilesAfterEnv": [
|
"setupFilesAfterEnv": [
|
||||||
"<rootDir>/src/jest-after-env.setup.ts"
|
"<rootDir>/src/jest-after-env.setup.ts"
|
||||||
],
|
],
|
||||||
@ -202,17 +209,20 @@
|
|||||||
"role": "Viewer"
|
"role": "Viewer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"resolutions": {
|
||||||
|
"@astronautlabs/jsonpath/underscore": "^1.12.1"
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astronautlabs/jsonpath": "^1.1.0",
|
"@astronautlabs/jsonpath": "^1.1.0",
|
||||||
"@hapi/call": "^9.0.0",
|
"@hapi/call": "^9.0.0",
|
||||||
"@hapi/subtext": "^7.0.4",
|
"@hapi/subtext": "^7.0.4",
|
||||||
"@kubernetes/client-node": "^0.16.3",
|
"@kubernetes/client-node": "^0.17.0",
|
||||||
"@material-ui/styles": "^4.11.5",
|
"@material-ui/styles": "^4.11.5",
|
||||||
"@ogre-tools/fp": "9.0.0",
|
"@ogre-tools/fp": "10.1.0",
|
||||||
"@ogre-tools/injectable": "9.0.0",
|
"@ogre-tools/injectable": "10.1.0",
|
||||||
"@ogre-tools/injectable-extension-for-auto-registration": "9.0.0",
|
"@ogre-tools/injectable-extension-for-auto-registration": "10.1.0",
|
||||||
"@ogre-tools/injectable-extension-for-mobx": "9.0.0",
|
"@ogre-tools/injectable-extension-for-mobx": "10.1.0",
|
||||||
"@ogre-tools/injectable-react": "9.0.0",
|
"@ogre-tools/injectable-react": "10.1.0",
|
||||||
"@sentry/electron": "^3.0.7",
|
"@sentry/electron": "^3.0.7",
|
||||||
"@sentry/integrations": "^6.19.3",
|
"@sentry/integrations": "^6.19.3",
|
||||||
"@side/jest-runtime": "^1.0.1",
|
"@side/jest-runtime": "^1.0.1",
|
||||||
@ -241,19 +251,19 @@
|
|||||||
"jsdom": "^16.7.0",
|
"jsdom": "^16.7.0",
|
||||||
"lodash": "^4.17.15",
|
"lodash": "^4.17.15",
|
||||||
"mac-ca": "^1.0.6",
|
"mac-ca": "^1.0.6",
|
||||||
"marked": "^4.0.17",
|
"marked": "^4.1.0",
|
||||||
"md5-file": "^5.0.0",
|
"md5-file": "^5.0.0",
|
||||||
"mobx": "^6.6.0",
|
"mobx": "^6.6.1",
|
||||||
"mobx-observable-history": "^2.0.3",
|
"mobx-observable-history": "^2.0.3",
|
||||||
"mobx-react": "^7.5.0",
|
"mobx-react": "^7.5.2",
|
||||||
"mobx-utils": "^6.0.4",
|
"mobx-utils": "^6.0.4",
|
||||||
"mock-fs": "^5.1.2",
|
"mock-fs": "^5.1.4",
|
||||||
"moment": "^2.29.3",
|
"moment": "^2.29.4",
|
||||||
"moment-timezone": "^0.5.34",
|
"moment-timezone": "^0.5.37",
|
||||||
"monaco-editor": "^0.29.1",
|
"monaco-editor": "^0.29.1",
|
||||||
"monaco-editor-webpack-plugin": "^5.0.0",
|
"monaco-editor-webpack-plugin": "^5.0.0",
|
||||||
"node-fetch": "lensapp/node-fetch#2.x",
|
"node-fetch": "^2.6.7",
|
||||||
"node-pty": "^0.11.0-beta19",
|
"node-pty": "0.10.1",
|
||||||
"npm": "^6.14.17",
|
"npm": "^6.14.17",
|
||||||
"p-limit": "^3.1.0",
|
"p-limit": "^3.1.0",
|
||||||
"path-to-regexp": "^6.2.0",
|
"path-to-regexp": "^6.2.0",
|
||||||
@ -278,22 +288,24 @@
|
|||||||
"url-parse": "^1.5.10",
|
"url-parse": "^1.5.10",
|
||||||
"uuid": "^8.3.2",
|
"uuid": "^8.3.2",
|
||||||
"win-ca": "^3.5.0",
|
"win-ca": "^3.5.0",
|
||||||
"winston": "^3.7.2",
|
"winston": "^3.8.1",
|
||||||
"winston-console-format": "^1.0.8",
|
"winston-console-format": "^1.0.8",
|
||||||
"winston-transport-browserconsole": "^1.0.5",
|
"winston-transport-browserconsole": "^1.0.5",
|
||||||
"ws": "^8.8.0"
|
"ws": "^8.8.1",
|
||||||
|
"xterm-link-provider": "^1.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@async-fn/jest": "1.6.1",
|
"@async-fn/jest": "1.6.4",
|
||||||
"@material-ui/core": "^4.12.3",
|
"@material-ui/core": "^4.12.3",
|
||||||
"@material-ui/icons": "^4.11.2",
|
"@material-ui/icons": "^4.11.2",
|
||||||
"@material-ui/lab": "^4.0.0-alpha.60",
|
"@material-ui/lab": "^4.0.0-alpha.60",
|
||||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
|
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
|
||||||
"@sentry/types": "^6.19.7",
|
"@sentry/types": "^6.19.7",
|
||||||
"@swc/core": "^1.2.197",
|
"@swc/cli": "^0.1.57",
|
||||||
"@swc/jest": "^0.2.21",
|
"@swc/core": "^1.2.246",
|
||||||
|
"@swc/jest": "^0.2.22",
|
||||||
"@testing-library/dom": "^7.31.2",
|
"@testing-library/dom": "^7.31.2",
|
||||||
"@testing-library/jest-dom": "^5.16.4",
|
"@testing-library/jest-dom": "^5.16.5",
|
||||||
"@testing-library/react": "^12.1.5",
|
"@testing-library/react": "^12.1.5",
|
||||||
"@testing-library/user-event": "^13.5.0",
|
"@testing-library/user-event": "^13.5.0",
|
||||||
"@types/byline": "^4.2.33",
|
"@types/byline": "^4.2.33",
|
||||||
@ -303,7 +315,7 @@
|
|||||||
"@types/color": "^3.0.3",
|
"@types/color": "^3.0.3",
|
||||||
"@types/command-line-args": "^5.2.0",
|
"@types/command-line-args": "^5.2.0",
|
||||||
"@types/crypto-js": "^3.1.47",
|
"@types/crypto-js": "^3.1.47",
|
||||||
"@types/dompurify": "^2.3.3",
|
"@types/dompurify": "^2.3.4",
|
||||||
"@types/electron-devtools-installer": "^2.2.1",
|
"@types/electron-devtools-installer": "^2.2.1",
|
||||||
"@types/fs-extra": "^9.0.13",
|
"@types/fs-extra": "^9.0.13",
|
||||||
"@types/glob-to-regexp": "^0.4.1",
|
"@types/glob-to-regexp": "^0.4.1",
|
||||||
@ -312,15 +324,15 @@
|
|||||||
"@types/hapi__subtext": "^7.0.0",
|
"@types/hapi__subtext": "^7.0.0",
|
||||||
"@types/html-webpack-plugin": "^3.2.6",
|
"@types/html-webpack-plugin": "^3.2.6",
|
||||||
"@types/http-proxy": "^1.17.9",
|
"@types/http-proxy": "^1.17.9",
|
||||||
"@types/jest": "^28.1.1",
|
"@types/jest": "^28.1.6",
|
||||||
"@types/js-yaml": "^4.0.5",
|
"@types/js-yaml": "^4.0.5",
|
||||||
"@types/jsdom": "^16.2.14",
|
"@types/jsdom": "^16.2.14",
|
||||||
"@types/lodash": "^4.14.181",
|
"@types/lodash": "^4.14.184",
|
||||||
"@types/marked": "^4.0.3",
|
"@types/marked": "^4.0.6",
|
||||||
"@types/md5-file": "^4.0.2",
|
"@types/md5-file": "^4.0.2",
|
||||||
"@types/mini-css-extract-plugin": "^2.4.0",
|
"@types/mini-css-extract-plugin": "^2.4.0",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^16.11.41",
|
"@types/node": "^16.11.55",
|
||||||
"@types/node-fetch": "^2.6.2",
|
"@types/node-fetch": "^2.6.2",
|
||||||
"@types/npm": "^2.0.32",
|
"@types/npm": "^2.0.32",
|
||||||
"@types/proper-lockfile": "^4.1.2",
|
"@types/proper-lockfile": "^4.1.2",
|
||||||
@ -336,8 +348,8 @@
|
|||||||
"@types/readable-stream": "^2.3.13",
|
"@types/readable-stream": "^2.3.13",
|
||||||
"@types/request": "^2.48.7",
|
"@types/request": "^2.48.7",
|
||||||
"@types/request-promise-native": "^1.0.18",
|
"@types/request-promise-native": "^1.0.18",
|
||||||
"@types/semver": "^7.3.9",
|
"@types/semver": "^7.3.12",
|
||||||
"@types/sharp": "^0.30.4",
|
"@types/sharp": "^0.30.5",
|
||||||
"@types/spdy": "^3.4.5",
|
"@types/spdy": "^3.4.5",
|
||||||
"@types/tar": "^4.0.5",
|
"@types/tar": "^4.0.5",
|
||||||
"@types/tar-stream": "^2.2.2",
|
"@types/tar-stream": "^2.2.2",
|
||||||
@ -348,29 +360,30 @@
|
|||||||
"@types/uuid": "^8.3.4",
|
"@types/uuid": "^8.3.4",
|
||||||
"@types/webpack": "^5.28.0",
|
"@types/webpack": "^5.28.0",
|
||||||
"@types/webpack-dev-server": "^4.7.2",
|
"@types/webpack-dev-server": "^4.7.2",
|
||||||
"@types/webpack-env": "^1.17.0",
|
"@types/webpack-env": "^1.18.0",
|
||||||
"@types/webpack-node-externals": "^2.5.3",
|
"@types/webpack-node-externals": "^2.5.3",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.28.0",
|
"@typescript-eslint/eslint-plugin": "^5.36.1",
|
||||||
"@typescript-eslint/parser": "^5.28.0",
|
"@typescript-eslint/parser": "^5.36.1",
|
||||||
|
"adr": "^1.4.1",
|
||||||
"ansi_up": "^5.1.0",
|
"ansi_up": "^5.1.0",
|
||||||
"chart.js": "^2.9.4",
|
"chart.js": "^2.9.4",
|
||||||
"circular-dependency-plugin": "^5.2.2",
|
"circular-dependency-plugin": "^5.2.2",
|
||||||
"cli-progress": "^3.11.1",
|
"cli-progress": "^3.11.2",
|
||||||
"color": "^3.2.1",
|
"color": "^3.2.1",
|
||||||
"command-line-args": "^5.2.1",
|
"command-line-args": "^5.2.1",
|
||||||
"concurrently": "^7.2.2",
|
"concurrently": "^7.3.0",
|
||||||
"css-loader": "^6.7.1",
|
"css-loader": "^6.7.1",
|
||||||
"deepdash": "^5.3.9",
|
"deepdash": "^5.3.9",
|
||||||
"dompurify": "^2.3.8",
|
"dompurify": "^2.4.0",
|
||||||
"electron": "^15.5.7",
|
"electron": "^19.0.15",
|
||||||
"electron-builder": "^23.0.3",
|
"electron-builder": "^23.3.3",
|
||||||
"electron-notarize": "^0.3.0",
|
"electron-notarize": "^0.3.0",
|
||||||
"esbuild": "^0.14.43",
|
"esbuild": "^0.15.6",
|
||||||
"esbuild-loader": "^2.19.0",
|
"esbuild-loader": "^2.19.0",
|
||||||
"eslint": "^8.17.0",
|
"eslint": "^8.23.0",
|
||||||
"eslint-plugin-header": "^3.1.1",
|
"eslint-plugin-header": "^3.1.1",
|
||||||
"eslint-plugin-import": "^2.26.0",
|
"eslint-plugin-import": "^2.26.0",
|
||||||
"eslint-plugin-react": "^7.30.0",
|
"eslint-plugin-react": "7.30.1",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"eslint-plugin-unused-imports": "^2.0.0",
|
"eslint-plugin-unused-imports": "^2.0.0",
|
||||||
"flex.box": "^3.4.4",
|
"flex.box": "^3.4.4",
|
||||||
@ -380,48 +393,48 @@
|
|||||||
"identity-obj-proxy": "^3.0.0",
|
"identity-obj-proxy": "^3.0.0",
|
||||||
"ignore-loader": "^0.1.2",
|
"ignore-loader": "^0.1.2",
|
||||||
"include-media": "^1.4.9",
|
"include-media": "^1.4.9",
|
||||||
"jest": "^28.1.1",
|
"jest": "^28.1.3",
|
||||||
"jest-canvas-mock": "^2.3.1",
|
"jest-canvas-mock": "^2.3.1",
|
||||||
"jest-environment-jsdom": "^28.1.1",
|
"jest-environment-jsdom": "^28.1.3",
|
||||||
"jest-fetch-mock": "^3.0.3",
|
"jest-fetch-mock": "^3.0.3",
|
||||||
"jest-mock-extended": "^2.0.6",
|
"jest-mock-extended": "^2.0.7",
|
||||||
"make-plural": "^6.2.2",
|
"make-plural": "^6.2.2",
|
||||||
"mini-css-extract-plugin": "^2.6.1",
|
"mini-css-extract-plugin": "^2.6.1",
|
||||||
"mock-http": "^1.1.0",
|
"mock-http": "^1.1.0",
|
||||||
"node-gyp": "7.1.2",
|
"node-gyp": "^8.3.0",
|
||||||
"node-loader": "^2.0.0",
|
"node-loader": "^2.0.0",
|
||||||
"nodemon": "^2.0.16",
|
"nodemon": "^2.0.19",
|
||||||
"playwright": "^1.22.2",
|
"playwright": "^1.25.1",
|
||||||
"postcss": "^8.4.14",
|
"postcss": "^8.4.16",
|
||||||
"postcss-loader": "^6.2.1",
|
"postcss-loader": "^6.2.1",
|
||||||
"randomcolor": "^0.6.2",
|
"randomcolor": "^0.6.2",
|
||||||
"react-beautiful-dnd": "^13.1.0",
|
"react-beautiful-dnd": "^13.1.1",
|
||||||
"react-refresh": "^0.13.0",
|
"react-refresh": "^0.14.0",
|
||||||
"react-refresh-typescript": "^2.0.5",
|
"react-refresh-typescript": "^2.0.7",
|
||||||
"react-router-dom": "^5.3.3",
|
"react-router-dom": "^5.3.3",
|
||||||
"react-select": "^5.3.2",
|
"react-select": "^5.4.0",
|
||||||
"react-select-event": "^5.5.0",
|
"react-select-event": "^5.5.1",
|
||||||
"react-table": "^7.8.0",
|
"react-table": "^7.8.0",
|
||||||
"react-window": "^1.8.7",
|
"react-window": "^1.8.7",
|
||||||
"sass": "^1.52.3",
|
"sass": "^1.54.8",
|
||||||
"sass-loader": "^12.6.0",
|
"sass-loader": "^12.6.0",
|
||||||
"sharp": "^0.30.6",
|
"sharp": "^0.30.7",
|
||||||
"style-loader": "^3.3.1",
|
"style-loader": "^3.3.1",
|
||||||
"tailwindcss": "^3.1.3",
|
"tailwindcss": "^3.1.8",
|
||||||
"tar-stream": "^2.2.0",
|
"tar-stream": "^2.2.0",
|
||||||
"ts-loader": "^9.2.8",
|
"ts-loader": "^9.3.1",
|
||||||
"ts-node": "^10.8.1",
|
"ts-node": "^10.9.1",
|
||||||
"type-fest": "^2.13.1",
|
"type-fest": "^2.14.0",
|
||||||
"typed-emitter": "^1.4.0",
|
"typed-emitter": "^1.4.0",
|
||||||
"typedoc": "0.22.17",
|
"typedoc": "0.23.13",
|
||||||
"typedoc-plugin-markdown": "^3.11.12",
|
"typedoc-plugin-markdown": "^3.13.1",
|
||||||
"typescript": "^4.7.4",
|
"typescript": "^4.8.2",
|
||||||
"typescript-plugin-css-modules": "^3.4.0",
|
"typescript-plugin-css-modules": "^3.4.0",
|
||||||
"webpack": "^5.73.0",
|
"webpack": "^5.74.0",
|
||||||
"webpack-cli": "^4.9.2",
|
"webpack-cli": "^4.9.2",
|
||||||
"webpack-dev-server": "^4.9.2",
|
"webpack-dev-server": "^4.10.1",
|
||||||
"webpack-node-externals": "^3.0.0",
|
"webpack-node-externals": "^3.0.0",
|
||||||
"xterm": "^4.18.0",
|
"xterm": "^4.19.0",
|
||||||
"xterm-addon-fit": "^0.5.0"
|
"xterm-addon-fit": "^0.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2
scripts/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*.mjs
|
||||||
|
*.map
|
||||||
9
scripts/.swcrc
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/swcrc",
|
||||||
|
"jsc": {
|
||||||
|
"parser": {
|
||||||
|
"syntax": "typescript"
|
||||||
|
},
|
||||||
|
"target": "es2022"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,16 +1,14 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
/**
|
/**
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
import child_process from "child_process";
|
||||||
// This script creates a release PR
|
|
||||||
import { execSync, exec, spawn } from "child_process";
|
|
||||||
import commandLineArgs from "command-line-args";
|
import commandLineArgs from "command-line-args";
|
||||||
import fse from "fs-extra";
|
import fse from "fs-extra";
|
||||||
import { basename } from "path";
|
import { basename } from "path";
|
||||||
|
import { createInterface } from "readline";
|
||||||
import semver from "semver";
|
import semver from "semver";
|
||||||
import { promisify } from "util";
|
import { inspect, promisify } from "util";
|
||||||
|
|
||||||
const {
|
const {
|
||||||
SemVer,
|
SemVer,
|
||||||
@ -18,8 +16,8 @@ const {
|
|||||||
rcompare: semverRcompare,
|
rcompare: semverRcompare,
|
||||||
lte: semverLte,
|
lte: semverLte,
|
||||||
} = semver;
|
} = semver;
|
||||||
const { readJsonSync } = fse;
|
const exec = promisify(child_process.exec);
|
||||||
const execP = promisify(exec);
|
const execFile = promisify(child_process.execFile);
|
||||||
|
|
||||||
const options = commandLineArgs([
|
const options = commandLineArgs([
|
||||||
{
|
{
|
||||||
@ -82,18 +80,17 @@ if (basename(process.cwd()) === "scripts") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const currentVersion = new SemVer(readJsonSync("./package.json").version);
|
const currentVersion = new SemVer((await fse.readJson("./package.json")).version);
|
||||||
const currentVersionMilestone = `${currentVersion.major}.${currentVersion.minor}.${currentVersion.patch}`;
|
|
||||||
|
|
||||||
console.log(`current version: ${currentVersion.format()}`);
|
console.log(`current version: ${currentVersion.format()}`);
|
||||||
console.log("fetching tags...");
|
console.log("fetching tags...");
|
||||||
execSync("git fetch --tags --force");
|
await exec("git fetch --tags --force");
|
||||||
|
|
||||||
const actualTags = execSync("git tag --list", { encoding: "utf-8" }).split(/\r?\n/).map(line => line.trim());
|
const actualTags = (await exec("git tag --list", { encoding: "utf-8" })).stdout.split(/\r?\n/).map(line => line.trim());
|
||||||
const [previousReleasedVersion] = actualTags
|
const [previousReleasedVersion] = actualTags
|
||||||
.map(semverValid)
|
.map((value) => semverValid(value))
|
||||||
.filter(Boolean)
|
.filter((v): v is string => typeof v === "string")
|
||||||
.sort(semverRcompare)
|
.sort((l, r) => semverRcompare(l, r))
|
||||||
.filter(version => semverLte(version, currentVersion));
|
.filter(version => semverLte(version, currentVersion));
|
||||||
|
|
||||||
const npmVersionArgs = [
|
const npmVersionArgs = [
|
||||||
@ -108,9 +105,12 @@ if (options.preid) {
|
|||||||
|
|
||||||
npmVersionArgs.push("--git-tag-version false");
|
npmVersionArgs.push("--git-tag-version false");
|
||||||
|
|
||||||
execSync(npmVersionArgs.join(" "), { stdio: "ignore" });
|
await exec(npmVersionArgs.join(" "));
|
||||||
|
|
||||||
const newVersion = new SemVer(readJsonSync("./package.json").version);
|
const newVersion = new SemVer((await fse.readJson("./package.json")).version);
|
||||||
|
const newVersionMilestone = `${newVersion.major}.${newVersion.minor}.${newVersion.patch}`;
|
||||||
|
|
||||||
|
console.log(`new version: ${newVersion.format()}`);
|
||||||
|
|
||||||
const getMergedPrsArgs = [
|
const getMergedPrsArgs = [
|
||||||
"gh",
|
"gh",
|
||||||
@ -119,22 +119,63 @@ const getMergedPrsArgs = [
|
|||||||
"--limit=500", // Should be big enough, if not we need to release more often ;)
|
"--limit=500", // Should be big enough, if not we need to release more often ;)
|
||||||
"--state=merged",
|
"--state=merged",
|
||||||
"--base=master",
|
"--base=master",
|
||||||
"--json mergeCommit,title,author,labels,number,milestone",
|
"--json mergeCommit,title,author,labels,number,milestone,mergedAt",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
interface GithubPrData {
|
||||||
|
author: {
|
||||||
|
login: string;
|
||||||
|
};
|
||||||
|
labels: {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
color: string;
|
||||||
|
}[];
|
||||||
|
mergeCommit: {
|
||||||
|
oid: string;
|
||||||
|
};
|
||||||
|
mergedAt: string;
|
||||||
|
milestone: {
|
||||||
|
number: number;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
dueOn: null | string;
|
||||||
|
};
|
||||||
|
number: number;
|
||||||
|
title: string;
|
||||||
|
}
|
||||||
|
|
||||||
console.log("retreiving last 500 PRs to create release PR body...");
|
console.log("retreiving last 500 PRs to create release PR body...");
|
||||||
const mergedPrs = JSON.parse(execSync(getMergedPrsArgs.join(" "), { encoding: "utf-8" }));
|
const mergedPrs = JSON.parse((await exec(getMergedPrsArgs.join(" "), { encoding: "utf-8" })).stdout) as GithubPrData[];
|
||||||
const milestoneRelevantPrs = mergedPrs.filter(pr => pr.milestone && pr.milestone.title === currentVersionMilestone);
|
const milestoneRelevantPrs = mergedPrs.filter(pr => pr.milestone?.title === newVersionMilestone);
|
||||||
const relaventPrsQuery = await Promise.all(
|
const relaventPrsQuery = await Promise.all(
|
||||||
milestoneRelevantPrs.map(async pr => ({
|
milestoneRelevantPrs.map(async pr => ({
|
||||||
pr,
|
pr,
|
||||||
stdout: (await execP(`git tag v${previousReleasedVersion} --no-contains ${pr.mergeCommit.oid}`)).stdout,
|
stdout: (await exec(`git tag v${previousReleasedVersion} --no-contains ${pr.mergeCommit.oid}`)).stdout,
|
||||||
})),
|
})),
|
||||||
);
|
);
|
||||||
const relaventPrs = relaventPrsQuery
|
const relaventPrs = relaventPrsQuery
|
||||||
.filter(query => query.stdout)
|
.filter(query => query.stdout)
|
||||||
.map(query => query.pr)
|
.map(query => query.pr)
|
||||||
.filter(pr => pr.labels.every(label => label.name !== "skip-changelog"));
|
.filter(pr => pr.labels.every(label => label.name !== "skip-changelog"))
|
||||||
|
.map(pr => ({ ...pr, mergedAt: new Date(pr.mergedAt) }))
|
||||||
|
.sort((left, right) => {
|
||||||
|
const leftAge = left.mergedAt.valueOf();
|
||||||
|
const rightAge = right.mergedAt.valueOf();
|
||||||
|
|
||||||
|
if (leftAge === rightAge) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (leftAge > rightAge) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(inspect(relaventPrs, false, null, true));
|
||||||
|
|
||||||
const enhancementPrLabelName = "enhancement";
|
const enhancementPrLabelName = "enhancement";
|
||||||
const bugfixPrLabelName = "bug";
|
const bugfixPrLabelName = "bug";
|
||||||
@ -197,19 +238,34 @@ const createPrArgs = [
|
|||||||
"--body-file", "-",
|
"--body-file", "-",
|
||||||
];
|
];
|
||||||
|
|
||||||
const createPrProcess = spawn("gh", createPrArgs, { stdio: "pipe" });
|
const rl = createInterface(process.stdin);
|
||||||
let result = "";
|
|
||||||
|
|
||||||
createPrProcess.stdout.on("data", (chunk) => result += chunk);
|
if (prBase !== "master") {
|
||||||
|
console.log("Cherry-picking commits to current branch");
|
||||||
|
|
||||||
createPrProcess.stdin.write(prBody);
|
for (const pr of relaventPrs) {
|
||||||
createPrProcess.stdin.end();
|
try {
|
||||||
|
const promise = exec(`git cherry-pick ${pr.mergeCommit.oid}`);
|
||||||
|
|
||||||
await new Promise((resolve) => {
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||||
createPrProcess.on("close", () => {
|
promise.child.stdout!.pipe(process.stdout);
|
||||||
createPrProcess.stdout.removeAllListeners();
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||||
resolve();
|
promise.child.stderr!.pipe(process.stderr);
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log(result);
|
await promise;
|
||||||
|
} catch {
|
||||||
|
console.error(`Failed to cherry-pick ${pr.mergeCommit.oid}, please resolve conflicts and then press enter here:`);
|
||||||
|
await new Promise<void>(resolve => rl.on("line", () => resolve()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const createPrProcess = execFile("gh", createPrArgs);
|
||||||
|
|
||||||
|
createPrProcess.child.stdout?.pipe(process.stdout);
|
||||||
|
createPrProcess.child.stderr?.pipe(process.stderr);
|
||||||
|
|
||||||
|
createPrProcess.child.stdin?.write(prBody);
|
||||||
|
createPrProcess.child.stdin?.end();
|
||||||
|
|
||||||
|
await createPrProcess;
|
||||||
@ -1,40 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`extension special characters in page registrations renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`extension special characters in page registrations when navigating to route with ID having special characters renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
Some page
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,151 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`navigate to extension page renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`navigate to extension page when extension navigates to child route renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
Child page
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`navigate to extension page when extension navigates to route with parameters renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
some-string-value-from-navigate
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
126
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
some-array-value-from-navigate
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<button
|
|
||||||
data-testid="button-to-change-page-parameters"
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
Some button
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`navigate to extension page when extension navigates to route without parameters renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
some-string-value
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
42
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
some-array-value,some-other-array-value
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<button
|
|
||||||
data-testid="button-to-change-page-parameters"
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
Some button
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`navigate to extension page when extension navigates to route without parameters when changing page parameters renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
some-changed-string-value
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
84
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
some-changed-array-value,some-other-changed-array-value
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<button
|
|
||||||
data-testid="button-to-change-page-parameters"
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
Some button
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,46 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`navigating between routes given route with optional path parameters when navigating to route with path parameters renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<pre>
|
|
||||||
{
|
|
||||||
"someParameter": "some-value",
|
|
||||||
"someOtherParameter": "some-other-value"
|
|
||||||
}
|
|
||||||
</pre>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`navigating between routes given route without path parameters when navigating to route renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
Some component
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,118 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`add-cluster - navigation using application menu renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`add-cluster - navigation using application menu when navigating to add cluster using application menu renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout AddClusters"
|
|
||||||
data-testid="add-cluster-page"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content flex column gaps"
|
|
||||||
>
|
|
||||||
<h2>
|
|
||||||
Add Clusters from Kubeconfig
|
|
||||||
</h2>
|
|
||||||
<p>
|
|
||||||
Clusters added here are
|
|
||||||
<b>
|
|
||||||
not
|
|
||||||
</b>
|
|
||||||
merged into the
|
|
||||||
<code>
|
|
||||||
~/.kube/config
|
|
||||||
</code>
|
|
||||||
file.
|
|
||||||
<a
|
|
||||||
href="https://docs.k8slens.dev/main//catalog/add-clusters/"
|
|
||||||
rel="noreferrer"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
Read more about adding clusters.
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="flex column"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="actions-panel"
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
class="Button primary"
|
|
||||||
disabled=""
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
Add clusters
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,596 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`installing update using tray when started renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update using tray when started when user checks for updates using tray renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Checking for updates...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_16"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update using tray when started when user checks for updates using tray when new update is discovered renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Checking for updates...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_115"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Download for version some-version started...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_118"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update using tray when started when user checks for updates using tray when new update is discovered when download fails renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Checking for updates...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_183"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Download for version some-version started...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_186"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Download of update failed
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_191"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update using tray when started when user checks for updates using tray when new update is discovered when download succeeds renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Checking for updates...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_266"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Download for version some-version started...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_269"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="flex column gaps"
|
|
||||||
data-testid="ask-boolean-some-irrelevant-random-id"
|
|
||||||
>
|
|
||||||
<b>
|
|
||||||
Update Available
|
|
||||||
</b>
|
|
||||||
<p>
|
|
||||||
Version some-version of Lens IDE is available and ready to be installed. Would you like to update now?
|
|
||||||
|
|
||||||
Lens should restart automatically, if it doesn't please restart manually. Installed extensions might require updating.
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="flex gaps row align-left box grow"
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
class="Button light"
|
|
||||||
data-testid="ask-boolean-some-irrelevant-random-id-button-yes"
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
Yes
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="Button active outlined"
|
|
||||||
data-testid="ask-boolean-some-irrelevant-random-id-button-no"
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
No
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-ask-boolean-for-some-irrelevant-random-id"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update using tray when started when user checks for updates using tray when no new update is discovered renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
Checking for updates...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_59"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Animate opacity notification flex info enter"
|
|
||||||
style="--enter-duration: 100ms; --leave-duration: 100ms;"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="info_outline"
|
|
||||||
>
|
|
||||||
info_outline
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="message box grow"
|
|
||||||
>
|
|
||||||
No new updates available
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="box"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon close material interactive focusable"
|
|
||||||
data-testid="close-notification-for-notification_62"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
@ -1,161 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`installing update when started renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update when started when user checks for updates renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update when started when user checks for updates when new update is discovered renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update when started when user checks for updates when new update is discovered when download fails renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update when started when user checks for updates when new update is discovered when download succeeds renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update when started when user checks for updates when new update is discovered when download succeeds when user answers not to install the update renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update when started when user checks for updates when new update is discovered when download succeeds when user answers to install the update renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`installing update when started when user checks for updates when no new update is discovered renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`periodical checking of updates given updater is enabled and configuration exists, when started renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`selection of update stability when started renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
@ -1,687 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`cluster - order of sidebar items when rendered renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="flex flex-col"
|
|
||||||
data-testid="cluster-sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarCluster"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Avatar rounded loadingAvatar"
|
|
||||||
style="width: 40px; height: 40px;"
|
|
||||||
>
|
|
||||||
??
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="loadingClusterName"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="sidebarNav sidebar-active-status"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-workloads"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-workloads"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Workloads
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-config"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-config"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="list"
|
|
||||||
>
|
|
||||||
list
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Config
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-some-parent-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-some-parent-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some parent
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-network"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-network"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="device_hub"
|
|
||||||
>
|
|
||||||
device_hub
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Network
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-storage"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-storage"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="storage"
|
|
||||||
>
|
|
||||||
storage
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Storage
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-some-another-parent-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-some-another-parent-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some another parent
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-helm"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-helm"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Helm
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-user-management"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-user-management"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="security"
|
|
||||||
>
|
|
||||||
security
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Access Control
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-custom-resources"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-custom-resources"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="extension"
|
|
||||||
>
|
|
||||||
extension
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Custom Resources
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-some-other-parent-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-some-other-parent-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some other parent
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`cluster - order of sidebar items when rendered when parent is expanded renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="flex flex-col"
|
|
||||||
data-testid="cluster-sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarCluster"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Avatar rounded loadingAvatar"
|
|
||||||
style="width: 40px; height: 40px;"
|
|
||||||
>
|
|
||||||
??
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="loadingClusterName"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="sidebarNav sidebar-active-status"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-workloads"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-workloads"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Workloads
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-config"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-config"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="list"
|
|
||||||
>
|
|
||||||
list
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Config
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-some-parent-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-some-parent-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some parent
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_up"
|
|
||||||
>
|
|
||||||
keyboard_arrow_up
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
<ul
|
|
||||||
class="sub-menu"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-parent-id-test="some-parent-id"
|
|
||||||
data-testid="sidebar-item-some-child-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-some-child-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some child
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-parent-id-test="some-parent-id"
|
|
||||||
data-testid="sidebar-item-some-another-child-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-some-another-child-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some another child
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-parent-id-test="some-parent-id"
|
|
||||||
data-testid="sidebar-item-some-other-child-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-some-other-child-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some other child
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-network"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-network"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="device_hub"
|
|
||||||
>
|
|
||||||
device_hub
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Network
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-storage"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-storage"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="storage"
|
|
||||||
>
|
|
||||||
storage
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Storage
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-some-another-parent-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-some-another-parent-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some another parent
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-helm"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-helm"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Helm
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-user-management"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-user-management"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="security"
|
|
||||||
>
|
|
||||||
security
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Access Control
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-custom-resources"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-custom-resources"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="extension"
|
|
||||||
>
|
|
||||||
extension
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Custom Resources
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-some-other-parent-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-some-other-parent-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some other parent
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,551 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`cluster - visibility of sidebar items given kube resource for route is not allowed renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="flex flex-col"
|
|
||||||
data-testid="cluster-sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarCluster"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Avatar rounded loadingAvatar"
|
|
||||||
style="width: 40px; height: 40px;"
|
|
||||||
>
|
|
||||||
??
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="loadingClusterName"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="sidebarNav sidebar-active-status"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-workloads"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-workloads"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Workloads
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-config"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-config"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="list"
|
|
||||||
>
|
|
||||||
list
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Config
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-network"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-network"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="device_hub"
|
|
||||||
>
|
|
||||||
device_hub
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Network
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-storage"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-storage"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="storage"
|
|
||||||
>
|
|
||||||
storage
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Storage
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-helm"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-helm"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Helm
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-user-management"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-user-management"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="security"
|
|
||||||
>
|
|
||||||
security
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Access Control
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-custom-resources"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-custom-resources"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="extension"
|
|
||||||
>
|
|
||||||
extension
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Custom Resources
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`cluster - visibility of sidebar items given kube resource for route is not allowed when kube resource becomes allowed renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="flex flex-col"
|
|
||||||
data-testid="cluster-sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarCluster"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Avatar rounded loadingAvatar"
|
|
||||||
style="width: 40px; height: 40px;"
|
|
||||||
>
|
|
||||||
??
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="loadingClusterName"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="sidebarNav sidebar-active-status"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-workloads"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-workloads"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Workloads
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-config"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-config"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="list"
|
|
||||||
>
|
|
||||||
list
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Config
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-some-item-id"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-some-item-id"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Some item
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-network"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-network"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="device_hub"
|
|
||||||
>
|
|
||||||
device_hub
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Network
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-storage"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-storage"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="storage"
|
|
||||||
>
|
|
||||||
storage
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Storage
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-namespaces"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-namespaces"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="layers"
|
|
||||||
>
|
|
||||||
layers
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Namespaces
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-helm"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-helm"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Helm
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-user-management"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-user-management"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="security"
|
|
||||||
>
|
|
||||||
security
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Access Control
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-custom-resources"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-custom-resources"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="extension"
|
|
||||||
>
|
|
||||||
extension
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Custom Resources
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,151 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`extensions - navigation using application menu renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`extensions - navigation using application menu when navigating to extensions using application menu renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout DropFileInput Extensions"
|
|
||||||
data-testid="extensions-page"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section>
|
|
||||||
<h1>
|
|
||||||
Extensions
|
|
||||||
</h1>
|
|
||||||
<div
|
|
||||||
class="notice mb-14 mt-3"
|
|
||||||
>
|
|
||||||
<p>
|
|
||||||
Add new features via Lens Extensions. Check out the
|
|
||||||
<a
|
|
||||||
href="https://docs.k8slens.dev/main//extensions/"
|
|
||||||
rel="noreferrer"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
docs
|
|
||||||
</a>
|
|
||||||
and list of
|
|
||||||
<a
|
|
||||||
href="https://github.com/lensapp/lens-extensions/blob/main/README.md"
|
|
||||||
rel="noreferrer"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
available extensions
|
|
||||||
</a>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<section
|
|
||||||
class="mt-2"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Name or file path or URL to an extension package (tar, tgz)
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="flex-1"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="flex-initial"
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
class="Button w-80 h-full primary"
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
Install
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<small
|
|
||||||
class="mt-3"
|
|
||||||
>
|
|
||||||
<b>
|
|
||||||
Pro-Tip
|
|
||||||
</b>
|
|
||||||
: you can drag-n-drop tarball-file to this area
|
|
||||||
</small>
|
|
||||||
</section>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="Spinner singleColor center"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,453 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`helm-charts - navigation to Helm charts when navigating to Helm charts renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="flex flex-col"
|
|
||||||
data-testid="cluster-sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarCluster"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Avatar rounded loadingAvatar"
|
|
||||||
style="width: 40px; height: 40px;"
|
|
||||||
>
|
|
||||||
??
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="loadingClusterName"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="sidebarNav sidebar-active-status"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-workloads"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-workloads"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Workloads
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-config"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-config"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="list"
|
|
||||||
>
|
|
||||||
list
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Config
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-network"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-network"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="device_hub"
|
|
||||||
>
|
|
||||||
device_hub
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Network
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-storage"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-storage"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="storage"
|
|
||||||
>
|
|
||||||
storage
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Storage
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="true"
|
|
||||||
data-testid="sidebar-item-helm"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
aria-current="page"
|
|
||||||
class="nav-item flex gaps align-center expandable active"
|
|
||||||
data-testid="sidebar-item-link-for-helm"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Helm
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-user-management"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center"
|
|
||||||
data-testid="sidebar-item-link-for-user-management"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="security"
|
|
||||||
>
|
|
||||||
security
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Access Control
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SidebarItem"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="sidebar-item-custom-resources"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
class="nav-item flex gaps align-center expandable"
|
|
||||||
data-testid="sidebar-item-link-for-custom-resources"
|
|
||||||
href="/"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="extension"
|
|
||||||
>
|
|
||||||
extension
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<span
|
|
||||||
class="link-text box grow"
|
|
||||||
>
|
|
||||||
Custom Resources
|
|
||||||
</span>
|
|
||||||
<i
|
|
||||||
class="Icon expand-icon box right material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="keyboard_arrow_down"
|
|
||||||
>
|
|
||||||
keyboard_arrow_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="TabLayout"
|
|
||||||
data-testid="tab-layout"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs center scrollable"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-is-active-test="true"
|
|
||||||
data-testid="tab-link-for-charts"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Charts
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-is-active-test="false"
|
|
||||||
data-testid="tab-link-for-releases"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Releases
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<main>
|
|
||||||
<div
|
|
||||||
data-testid="page-for-helm-charts"
|
|
||||||
style="display: none;"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="ItemListLayout flex column HelmCharts"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header flex gaps align-center"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Input SearchInput focused"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
placeholder="Search Helm Charts..."
|
|
||||||
spellcheck="false"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
<i
|
|
||||||
class="Icon material focusable small"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="search"
|
|
||||||
>
|
|
||||||
search
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="items box grow flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Table flex column HelmCharts box grow dark selectable scrollable sortable autoSize virtual"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="TableHead sticky nowrap topLine"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="TableCell icon nowrap"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="TableCell name nowrap sorting"
|
|
||||||
id="name"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
Name
|
|
||||||
</div>
|
|
||||||
<i
|
|
||||||
class="Icon sortIcon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="arrow_drop_down"
|
|
||||||
>
|
|
||||||
arrow_drop_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="TableCell description nowrap"
|
|
||||||
id="description"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
Description
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="TableCell version nowrap"
|
|
||||||
id="version"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
Version
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="TableCell app-version nowrap"
|
|
||||||
id="app-version"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
App Version
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="TableCell repository nowrap sorting"
|
|
||||||
id="repo"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
Repository
|
|
||||||
</div>
|
|
||||||
<i
|
|
||||||
class="Icon sortIcon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="arrow_drop_down"
|
|
||||||
>
|
|
||||||
arrow_drop_down
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="TableCell menu nowrap"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon material interactive focusable"
|
|
||||||
id="menu_actions_17"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="more_vert"
|
|
||||||
>
|
|
||||||
more_vert
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="NoItems flex box grow"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="box center"
|
|
||||||
>
|
|
||||||
Item list is empty
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="AddRemoveButtons flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import type { RenderResult } from "@testing-library/react";
|
|
||||||
import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
|
||||||
import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
|
||||||
|
|
||||||
describe("helm-charts - navigation to Helm charts", () => {
|
|
||||||
let applicationBuilder: ApplicationBuilder;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
applicationBuilder = getApplicationBuilder();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("when navigating to Helm charts", () => {
|
|
||||||
let rendered: RenderResult;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
applicationBuilder.setEnvironmentToClusterFrame();
|
|
||||||
|
|
||||||
rendered = await applicationBuilder.render();
|
|
||||||
|
|
||||||
applicationBuilder.helmCharts.navigate();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("renders", () => {
|
|
||||||
expect(rendered.container).toMatchSnapshot();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows page for Helm charts", () => {
|
|
||||||
const page = rendered.getByTestId("page-for-helm-charts");
|
|
||||||
|
|
||||||
expect(page).not.toBeNull();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -0,0 +1,851 @@
|
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`download logs options in pod logs dock tab when opening pod logs renders 1`] = `
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
class="Notifications flex column align-flex-end"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="mainLayout"
|
||||||
|
style="--sidebar-width: 200px;"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="sidebar"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="flex flex-col"
|
||||||
|
data-testid="cluster-sidebar"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="SidebarCluster"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Avatar rounded loadingAvatar"
|
||||||
|
style="width: 40px; height: 40px;"
|
||||||
|
>
|
||||||
|
??
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="loadingClusterName"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="sidebarNav sidebar-active-status"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="SidebarItem"
|
||||||
|
data-is-active-test="true"
|
||||||
|
data-testid="sidebar-item-workloads"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
aria-current="page"
|
||||||
|
class="navItem active"
|
||||||
|
data-testid="sidebar-item-link-for-workloads"
|
||||||
|
href="/"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon svg focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
/>
|
||||||
|
</i>
|
||||||
|
<span>
|
||||||
|
Workloads
|
||||||
|
</span>
|
||||||
|
<i
|
||||||
|
class="Icon expandIcon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="keyboard_arrow_down"
|
||||||
|
>
|
||||||
|
keyboard_arrow_down
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="SidebarItem"
|
||||||
|
data-is-active-test="false"
|
||||||
|
data-testid="sidebar-item-config"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
class="navItem"
|
||||||
|
data-testid="sidebar-item-link-for-config"
|
||||||
|
href="/"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="list"
|
||||||
|
>
|
||||||
|
list
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<span>
|
||||||
|
Config
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="SidebarItem"
|
||||||
|
data-is-active-test="false"
|
||||||
|
data-testid="sidebar-item-network"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
class="navItem"
|
||||||
|
data-testid="sidebar-item-link-for-network"
|
||||||
|
href="/"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="device_hub"
|
||||||
|
>
|
||||||
|
device_hub
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<span>
|
||||||
|
Network
|
||||||
|
</span>
|
||||||
|
<i
|
||||||
|
class="Icon expandIcon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="keyboard_arrow_down"
|
||||||
|
>
|
||||||
|
keyboard_arrow_down
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="SidebarItem"
|
||||||
|
data-is-active-test="false"
|
||||||
|
data-testid="sidebar-item-storage"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
class="navItem"
|
||||||
|
data-testid="sidebar-item-link-for-storage"
|
||||||
|
href="/"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="storage"
|
||||||
|
>
|
||||||
|
storage
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<span>
|
||||||
|
Storage
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="SidebarItem"
|
||||||
|
data-is-active-test="false"
|
||||||
|
data-testid="sidebar-item-helm"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
class="navItem"
|
||||||
|
data-testid="sidebar-item-link-for-helm"
|
||||||
|
href="/"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon svg focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
/>
|
||||||
|
</i>
|
||||||
|
<span>
|
||||||
|
Helm
|
||||||
|
</span>
|
||||||
|
<i
|
||||||
|
class="Icon expandIcon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="keyboard_arrow_down"
|
||||||
|
>
|
||||||
|
keyboard_arrow_down
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="SidebarItem"
|
||||||
|
data-is-active-test="false"
|
||||||
|
data-testid="sidebar-item-user-management"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
class="navItem"
|
||||||
|
data-testid="sidebar-item-link-for-user-management"
|
||||||
|
href="/"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="security"
|
||||||
|
>
|
||||||
|
security
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<span>
|
||||||
|
Access Control
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="SidebarItem"
|
||||||
|
data-is-active-test="false"
|
||||||
|
data-testid="sidebar-item-custom-resources"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
class="navItem"
|
||||||
|
data-testid="sidebar-item-link-for-custom-resources"
|
||||||
|
href="/"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="extension"
|
||||||
|
>
|
||||||
|
extension
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<span>
|
||||||
|
Custom Resources
|
||||||
|
</span>
|
||||||
|
<i
|
||||||
|
class="Icon expandIcon material focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="keyboard_arrow_down"
|
||||||
|
>
|
||||||
|
keyboard_arrow_down
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="ResizingAnchor horizontal trailing"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="contents"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="TabLayout"
|
||||||
|
data-testid="tab-layout"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Tabs center scrollable"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Tab flex gaps align-center active"
|
||||||
|
data-is-active-test="true"
|
||||||
|
data-testid="tab-link-for-overview"
|
||||||
|
role="tab"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="label"
|
||||||
|
>
|
||||||
|
Overview
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<main>
|
||||||
|
<div
|
||||||
|
class="WorkloadsOverview flex column gaps"
|
||||||
|
data-testid="page-for-workloads-overview"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="header flex gaps align-center"
|
||||||
|
>
|
||||||
|
<h5
|
||||||
|
class="box grow"
|
||||||
|
>
|
||||||
|
Overview
|
||||||
|
</h5>
|
||||||
|
<div
|
||||||
|
class="NamespaceSelectFilterParent"
|
||||||
|
data-testid="namespace-select-filter"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Select theme-dark NamespaceSelect NamespaceSelectFilter css-b62m3t-container"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="css-1f43avz-a11yText-A11yText"
|
||||||
|
id="react-select-overview-namespace-select-filter-input-live-region"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
aria-atomic="false"
|
||||||
|
aria-live="polite"
|
||||||
|
aria-relevant="additions text"
|
||||||
|
class="css-1f43avz-a11yText-A11yText"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="Select__control css-1s2u09g-control"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Select__value-container Select__value-container--is-multi css-319lph-ValueContainer"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Select__placeholder css-14el2xx-placeholder"
|
||||||
|
id="react-select-overview-namespace-select-filter-input-placeholder"
|
||||||
|
>
|
||||||
|
All namespaces
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="Select__input-container css-6j8wv5-Input"
|
||||||
|
data-value=""
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
aria-autocomplete="list"
|
||||||
|
aria-describedby="react-select-overview-namespace-select-filter-input-placeholder"
|
||||||
|
aria-expanded="false"
|
||||||
|
aria-haspopup="true"
|
||||||
|
autocapitalize="none"
|
||||||
|
autocomplete="off"
|
||||||
|
autocorrect="off"
|
||||||
|
class="Select__input"
|
||||||
|
id="overview-namespace-select-filter-input"
|
||||||
|
role="combobox"
|
||||||
|
spellcheck="false"
|
||||||
|
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
||||||
|
tabindex="0"
|
||||||
|
type="text"
|
||||||
|
value=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
aria-hidden="true"
|
||||||
|
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
aria-hidden="true"
|
||||||
|
class="css-tj5bde-Svg"
|
||||||
|
focusable="false"
|
||||||
|
height="20"
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
width="20"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="OverviewStatuses"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="workloads"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="footer"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Dock isOpen"
|
||||||
|
tabindex="-1"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="ResizingAnchor vertical leading"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="tabs-container flex align-center"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="dockTabs"
|
||||||
|
role="tablist"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Tabs tabs"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Tab flex gaps align-center DockTab active"
|
||||||
|
data-testid="dock-tab-for-log-tab-some-irrelevant-random-id"
|
||||||
|
id="tab-log-tab-some-irrelevant-random-id"
|
||||||
|
role="tab"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon material focusable small"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="subject"
|
||||||
|
>
|
||||||
|
subject
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<div
|
||||||
|
class="label"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="flex align-center"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="title"
|
||||||
|
>
|
||||||
|
Pod dockerExporter
|
||||||
|
</span>
|
||||||
|
<div
|
||||||
|
class="close"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon material interactive focusable small"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="close"
|
||||||
|
>
|
||||||
|
close
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<div>
|
||||||
|
Close ⌘+W
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="toolbar flex gaps align-center box grow"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="dock-menu box grow"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
class="Icon new-dock-tab material interactive focusable"
|
||||||
|
id="menu-actions-for-dock"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="add"
|
||||||
|
>
|
||||||
|
add
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<div>
|
||||||
|
New tab
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<i
|
||||||
|
class="Icon material interactive focusable"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="fullscreen"
|
||||||
|
>
|
||||||
|
fullscreen
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<div>
|
||||||
|
Fit to window
|
||||||
|
</div>
|
||||||
|
<i
|
||||||
|
class="Icon material interactive focusable"
|
||||||
|
tabindex="0"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="keyboard_arrow_down"
|
||||||
|
>
|
||||||
|
keyboard_arrow_down
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<div>
|
||||||
|
Minimize
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="tab-content pod-logs"
|
||||||
|
data-testid="dock-tab-content-for-log-tab-some-irrelevant-random-id"
|
||||||
|
style="flex-basis: 300px;"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="PodLogs flex column"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="InfoPanel flex gaps align-center"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="controls"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="flex gaps"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="LogResourceSelector flex gaps align-center"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
Namespace
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="badge"
|
||||||
|
data-testid="namespace-badge"
|
||||||
|
>
|
||||||
|
default
|
||||||
|
</div>
|
||||||
|
<span>
|
||||||
|
Pod
|
||||||
|
</span>
|
||||||
|
<div
|
||||||
|
class="Select theme-dark pod-selector css-b62m3t-container"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="css-1f43avz-a11yText-A11yText"
|
||||||
|
id="react-select-2-live-region"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
aria-atomic="false"
|
||||||
|
aria-live="polite"
|
||||||
|
aria-relevant="additions text"
|
||||||
|
class="css-1f43avz-a11yText-A11yText"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="Select__control css-1s2u09g-control"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Select__single-value css-qc6sy-singleValue"
|
||||||
|
>
|
||||||
|
dockerExporter
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="Select__input-container css-6j8wv5-Input"
|
||||||
|
data-value=""
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
aria-autocomplete="list"
|
||||||
|
aria-expanded="false"
|
||||||
|
aria-haspopup="true"
|
||||||
|
autocapitalize="none"
|
||||||
|
autocomplete="off"
|
||||||
|
autocorrect="off"
|
||||||
|
class="Select__input"
|
||||||
|
id="react-select-2-input"
|
||||||
|
role="combobox"
|
||||||
|
spellcheck="false"
|
||||||
|
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
||||||
|
tabindex="0"
|
||||||
|
type="text"
|
||||||
|
value=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
aria-hidden="true"
|
||||||
|
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
aria-hidden="true"
|
||||||
|
class="css-tj5bde-Svg"
|
||||||
|
focusable="false"
|
||||||
|
height="20"
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
width="20"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<span>
|
||||||
|
Container
|
||||||
|
</span>
|
||||||
|
<div
|
||||||
|
class="Select theme-dark container-selector css-b62m3t-container"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="css-1f43avz-a11yText-A11yText"
|
||||||
|
id="react-select-container-selector-input-live-region"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
aria-atomic="false"
|
||||||
|
aria-live="polite"
|
||||||
|
aria-relevant="additions text"
|
||||||
|
class="css-1f43avz-a11yText-A11yText"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="Select__control css-1s2u09g-control"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Select__single-value css-qc6sy-singleValue"
|
||||||
|
>
|
||||||
|
docker-exporter
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="Select__input-container css-6j8wv5-Input"
|
||||||
|
data-value=""
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
aria-autocomplete="list"
|
||||||
|
aria-expanded="false"
|
||||||
|
aria-haspopup="true"
|
||||||
|
autocapitalize="none"
|
||||||
|
autocomplete="off"
|
||||||
|
autocorrect="off"
|
||||||
|
class="Select__input"
|
||||||
|
id="container-selector-input"
|
||||||
|
role="combobox"
|
||||||
|
spellcheck="false"
|
||||||
|
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
||||||
|
tabindex="0"
|
||||||
|
type="text"
|
||||||
|
value=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
aria-hidden="true"
|
||||||
|
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
aria-hidden="true"
|
||||||
|
class="css-tj5bde-Svg"
|
||||||
|
focusable="false"
|
||||||
|
height="20"
|
||||||
|
viewBox="0 0 20 20"
|
||||||
|
width="20"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="LogSearch flex box grow justify-flex-end gaps align-center"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="Input SearchInput focused"
|
||||||
|
>
|
||||||
|
<label
|
||||||
|
class="input-area flex gaps align-center"
|
||||||
|
id=""
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
class="input box grow"
|
||||||
|
placeholder="Search..."
|
||||||
|
spellcheck="false"
|
||||||
|
value=""
|
||||||
|
/>
|
||||||
|
<i
|
||||||
|
class="Icon material focusable small"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="search"
|
||||||
|
>
|
||||||
|
search
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
</label>
|
||||||
|
<div
|
||||||
|
class="input-info flex gaps"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<i
|
||||||
|
class="Icon material interactive disabled focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="keyboard_arrow_up"
|
||||||
|
>
|
||||||
|
keyboard_arrow_up
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<div>
|
||||||
|
Previous
|
||||||
|
</div>
|
||||||
|
<i
|
||||||
|
class="Icon material interactive disabled focusable"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="keyboard_arrow_down"
|
||||||
|
>
|
||||||
|
keyboard_arrow_down
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
<div>
|
||||||
|
Next
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="LogList flex"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="VirtualList box grow"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
class="list"
|
||||||
|
style="position: relative; height: 420000px; width: 100%; overflow: auto; will-change: transform; direction: ltr;"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style="height: 18px; width: 100%;"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="LogRow"
|
||||||
|
style="position: absolute; left: 0px; top: 0px; height: 18px; width: 100%;"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
some-logs
|
||||||
|
</span>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="controls"
|
||||||
|
data-testid="log-controls"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<span>
|
||||||
|
Logs from
|
||||||
|
|
||||||
|
<b>
|
||||||
|
Invalid Date
|
||||||
|
</b>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="flex gaps align-center"
|
||||||
|
>
|
||||||
|
<label
|
||||||
|
class="Checkbox flex align-center show-timestamps"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
/>
|
||||||
|
<i
|
||||||
|
class="box flex align-center"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
class="label"
|
||||||
|
>
|
||||||
|
Show timestamps
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<label
|
||||||
|
class="Checkbox flex align-center show-previous checked"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
checked=""
|
||||||
|
type="checkbox"
|
||||||
|
/>
|
||||||
|
<i
|
||||||
|
class="box flex align-center"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
class="label"
|
||||||
|
>
|
||||||
|
Show previous terminated container
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
id="download-logs-dropdown"
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="dropdown"
|
||||||
|
data-testid="download-logs-dropdown"
|
||||||
|
>
|
||||||
|
Download
|
||||||
|
<i
|
||||||
|
class="Icon material focusable smallest"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="icon"
|
||||||
|
data-icon-name="arrow_drop_down"
|
||||||
|
>
|
||||||
|
arrow_drop_down
|
||||||
|
</span>
|
||||||
|
</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
`;
|
||||||
263
src/behaviours/pod-logs/download-logs.test.tsx
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { RenderResult } from "@testing-library/react";
|
||||||
|
import { act, waitFor } from "@testing-library/react";
|
||||||
|
import getPodByIdInjectable from "../../renderer/components/+workloads-pods/get-pod-by-id.injectable";
|
||||||
|
import getPodsByOwnerIdInjectable from "../../renderer/components/+workloads-pods/get-pods-by-owner-id.injectable";
|
||||||
|
import openSaveFileDialogInjectable from "../../renderer/utils/save-file.injectable";
|
||||||
|
import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
||||||
|
import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
||||||
|
import dockStoreInjectable from "../../renderer/components/dock/dock/store.injectable";
|
||||||
|
import areLogsPresentInjectable from "../../renderer/components/dock/logs/are-logs-present.injectable";
|
||||||
|
import type { CallForLogs } from "../../renderer/components/dock/logs/call-for-logs.injectable";
|
||||||
|
import callForLogsInjectable from "../../renderer/components/dock/logs/call-for-logs.injectable";
|
||||||
|
import createPodLogsTabInjectable from "../../renderer/components/dock/logs/create-pod-logs-tab.injectable";
|
||||||
|
import getLogTabDataInjectable from "../../renderer/components/dock/logs/get-log-tab-data.injectable";
|
||||||
|
import getLogsWithoutTimestampsInjectable from "../../renderer/components/dock/logs/get-logs-without-timestamps.injectable";
|
||||||
|
import getLogsInjectable from "../../renderer/components/dock/logs/get-logs.injectable";
|
||||||
|
import getRandomIdForPodLogsTabInjectable from "../../renderer/components/dock/logs/get-random-id-for-pod-logs-tab.injectable";
|
||||||
|
import getTimestampSplitLogsInjectable from "../../renderer/components/dock/logs/get-timestamp-split-logs.injectable";
|
||||||
|
import loadLogsInjectable from "../../renderer/components/dock/logs/load-logs.injectable";
|
||||||
|
import reloadLogsInjectable from "../../renderer/components/dock/logs/reload-logs.injectable";
|
||||||
|
import setLogTabDataInjectable from "../../renderer/components/dock/logs/set-log-tab-data.injectable";
|
||||||
|
import stopLoadingLogsInjectable from "../../renderer/components/dock/logs/stop-loading-logs.injectable";
|
||||||
|
import { dockerPod } from "../../renderer/components/dock/logs/__test__/pod.mock";
|
||||||
|
|
||||||
|
describe("download logs options in pod logs dock tab", () => {
|
||||||
|
let rendered: RenderResult;
|
||||||
|
let builder: ApplicationBuilder;
|
||||||
|
let openSaveFileDialogMock: jest.MockedFunction<() => void>;
|
||||||
|
let callForLogsMock: jest.MockedFunction<CallForLogs>;
|
||||||
|
const logs = new Map([["timestamp", "some-logs"]]);
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
const selectedPod = dockerPod;
|
||||||
|
|
||||||
|
builder = getApplicationBuilder();
|
||||||
|
|
||||||
|
builder.setEnvironmentToClusterFrame();
|
||||||
|
|
||||||
|
callForLogsMock = jest.fn();
|
||||||
|
|
||||||
|
builder.beforeWindowStart((windowDi) => {
|
||||||
|
windowDi.override(callForLogsInjectable, () => callForLogsMock);
|
||||||
|
|
||||||
|
// Overriding internals of logsViewModelInjectable
|
||||||
|
windowDi.override(getLogsInjectable, () => () => ["some-logs"]);
|
||||||
|
windowDi.override(getLogsWithoutTimestampsInjectable, () => () => ["some-logs"]);
|
||||||
|
windowDi.override(getTimestampSplitLogsInjectable, () => () => [...logs]);
|
||||||
|
windowDi.override(reloadLogsInjectable, () => jest.fn());
|
||||||
|
windowDi.override(getLogTabDataInjectable, () => () => ({
|
||||||
|
selectedPodId: selectedPod.getId(),
|
||||||
|
selectedContainer: selectedPod.getContainers()[0].name,
|
||||||
|
namespace: "default",
|
||||||
|
showPrevious: true,
|
||||||
|
showTimestamps: false,
|
||||||
|
}));
|
||||||
|
windowDi.override(setLogTabDataInjectable, () => jest.fn());
|
||||||
|
windowDi.override(loadLogsInjectable, () => jest.fn());
|
||||||
|
windowDi.override(stopLoadingLogsInjectable, () => jest.fn());
|
||||||
|
windowDi.override(areLogsPresentInjectable, () => jest.fn());
|
||||||
|
windowDi.override(getPodByIdInjectable, () => (id) => {
|
||||||
|
if (id === selectedPod.getId()) {
|
||||||
|
return selectedPod;
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
});
|
||||||
|
windowDi.override(getPodsByOwnerIdInjectable, () => jest.fn());
|
||||||
|
|
||||||
|
windowDi.override(getRandomIdForPodLogsTabInjectable, () => jest.fn(() => "some-irrelevant-random-id"));
|
||||||
|
|
||||||
|
openSaveFileDialogMock = jest.fn();
|
||||||
|
windowDi.override(openSaveFileDialogInjectable, () => openSaveFileDialogMock);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when opening pod logs", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
rendered = await builder.render();
|
||||||
|
|
||||||
|
const windowDi = builder.applicationWindow.only.di;
|
||||||
|
const pod = dockerPod;
|
||||||
|
const createLogsTab = windowDi.inject(createPodLogsTabInjectable);
|
||||||
|
const container = {
|
||||||
|
name: "docker-exporter",
|
||||||
|
image: "docker.io/prom/node-exporter:v1.0.0-rc.0",
|
||||||
|
imagePullPolicy: "pull",
|
||||||
|
};
|
||||||
|
|
||||||
|
const dockStore = windowDi.inject(dockStoreInjectable);
|
||||||
|
|
||||||
|
dockStore.closeTab("terminal");
|
||||||
|
|
||||||
|
createLogsTab({
|
||||||
|
selectedPod: pod,
|
||||||
|
selectedContainer: container,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders", () => {
|
||||||
|
expect(rendered.baseElement).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("contains download dropdown button", () => {
|
||||||
|
expect(rendered.getByTestId("download-logs-dropdown")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when clicking on button", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const button = rendered.getByTestId("download-logs-dropdown");
|
||||||
|
|
||||||
|
act(() => button.click());
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shows download visible logs menu item", () => {
|
||||||
|
expect(rendered.getByTestId("download-visible-logs")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shows download all logs menu item", () => {
|
||||||
|
expect(rendered.getByTestId("download-all-logs")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when call for logs resolves with logs", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
callForLogsMock.mockResolvedValue("all-logs");
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when selected 'download visible logs'", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const button = rendered.getByTestId("download-visible-logs");
|
||||||
|
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shows save dialog with proper attributes", () => {
|
||||||
|
expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when selected 'download all logs'", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await act(async () => {
|
||||||
|
const button = rendered.getByTestId("download-all-logs");
|
||||||
|
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("logs have been called with query", () => {
|
||||||
|
expect(callForLogsMock).toHaveBeenCalledWith(
|
||||||
|
{ name: "dockerExporter", namespace: "default" },
|
||||||
|
{ "previous": true, "timestamps": false },
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shows save dialog with proper attributes", async () => {
|
||||||
|
expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "all-logs", "text/plain");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("doesn't block download dropdown for interaction after click", async () => {
|
||||||
|
expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("blocking user interaction after menu item click", () => {
|
||||||
|
it("block download dropdown for interaction when selected 'download all logs'", async () => {
|
||||||
|
const downloadMenuItem = rendered.getByTestId("download-all-logs");
|
||||||
|
|
||||||
|
act(() => downloadMenuItem.click());
|
||||||
|
|
||||||
|
await waitFor(() => {
|
||||||
|
expect(rendered.getByTestId("download-logs-dropdown")).toHaveAttribute("disabled");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("doesn't block dropdown for interaction when selected 'download visible logs'", () => {
|
||||||
|
const downloadMenuItem = rendered.getByTestId("download-visible-logs");
|
||||||
|
|
||||||
|
act(() => downloadMenuItem.click());
|
||||||
|
|
||||||
|
expect(rendered.getByTestId("download-logs-dropdown")).not.toHaveAttribute("disabled");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when call for logs resolves with no logs", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
callForLogsMock.mockResolvedValue("");
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when selected 'download visible logs'", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const button = rendered.getByTestId("download-visible-logs");
|
||||||
|
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shows save dialog with proper attributes", () => {
|
||||||
|
expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when selected 'download all logs'", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await act(async () => {
|
||||||
|
const button = rendered.getByTestId("download-all-logs");
|
||||||
|
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("doesn't show save dialog", async () => {
|
||||||
|
expect(openSaveFileDialogMock).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when call for logs rejects", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
callForLogsMock.mockRejectedValue("error");
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when selected 'download visible logs'", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await act(async () => {
|
||||||
|
const button = rendered.getByTestId("download-visible-logs");
|
||||||
|
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shows save dialog with proper attributes", () => {
|
||||||
|
expect(openSaveFileDialogMock).toHaveBeenCalledWith("dockerExporter.log", "some-logs", "text/plain");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when selected 'download all logs'", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await act(async () => {
|
||||||
|
const button = rendered.getByTestId("download-all-logs");
|
||||||
|
|
||||||
|
button.click();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("logs have been called", () => {
|
||||||
|
expect(callForLogsMock).toHaveBeenCalledWith(
|
||||||
|
{ name: "dockerExporter", namespace: "default" },
|
||||||
|
{ "previous": true, "timestamps": false },
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("doesn't show save dialog", async () => {
|
||||||
|
expect(openSaveFileDialogMock).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -1,755 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`preferences - navigation to application preferences given in some child page of preferences, when rendered renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="proxy-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="proxy"
|
|
||||||
>
|
|
||||||
<section>
|
|
||||||
<h2
|
|
||||||
data-testid="proxy-header"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
HTTP Proxy
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
placeholder="Type HTTP proxy url (example: http://proxy.acme.org:8080)"
|
|
||||||
spellcheck="false"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<small
|
|
||||||
class="hint"
|
|
||||||
>
|
|
||||||
Proxy is used only for non-cluster communication.
|
|
||||||
</small>
|
|
||||||
</section>
|
|
||||||
<hr
|
|
||||||
class="small"
|
|
||||||
/>
|
|
||||||
<section
|
|
||||||
class="small"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Certificate Trust
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Allow untrusted Certificate Authorities
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<small
|
|
||||||
class="hint"
|
|
||||||
>
|
|
||||||
This will make Lens to trust ANY certificate authority without any validations.
|
|
||||||
|
|
||||||
Needed with some corporate proxies that do certificate re-writing.
|
|
||||||
|
|
||||||
Does not affect cluster communications!
|
|
||||||
</small>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`preferences - navigation to application preferences given in some child page of preferences, when rendered when navigating to application preferences using navigation renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="application-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="application"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="application-header"
|
|
||||||
>
|
|
||||||
Application
|
|
||||||
</h2>
|
|
||||||
<section
|
|
||||||
id="appearance"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Theme
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-theme-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-theme-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-theme-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="theme-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="extensionRegistryUrl"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Extension Install Registry
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-extension-install-registry-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-extension-install-registry-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-extension-install-registry-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="extension-install-registry-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p
|
|
||||||
class="mt-4 mb-5 leading-relaxed"
|
|
||||||
>
|
|
||||||
This setting is to change the registry URL for installing extensions by name.
|
|
||||||
If you are unable to access the default registry (https://registry.npmjs.org) you can change it in your
|
|
||||||
<b>
|
|
||||||
.npmrc
|
|
||||||
</b>
|
|
||||||
file or in the input below.
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="Input theme round black disabled invalid"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
disabled=""
|
|
||||||
placeholder="Custom Extension Registry URL..."
|
|
||||||
spellcheck="false"
|
|
||||||
value="some-custom-url"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="other"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Start-up
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Automatically start Lens on login
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="update-channel"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Update Channel
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-update-channel-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__single-value css-qc6sy-singleValue"
|
|
||||||
>
|
|
||||||
Stable
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="update-channel-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="locale"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Locale Timezone
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-timezone-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-timezone-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-timezone-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="timezone-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,963 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`preferences - navigation to editor preferences given in preferences, when rendered renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="application-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="application"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="application-header"
|
|
||||||
>
|
|
||||||
Application
|
|
||||||
</h2>
|
|
||||||
<section
|
|
||||||
id="appearance"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Theme
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-theme-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-theme-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-theme-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="theme-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="extensionRegistryUrl"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Extension Install Registry
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-extension-install-registry-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-extension-install-registry-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-extension-install-registry-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="extension-install-registry-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p
|
|
||||||
class="mt-4 mb-5 leading-relaxed"
|
|
||||||
>
|
|
||||||
This setting is to change the registry URL for installing extensions by name.
|
|
||||||
If you are unable to access the default registry (https://registry.npmjs.org) you can change it in your
|
|
||||||
<b>
|
|
||||||
.npmrc
|
|
||||||
</b>
|
|
||||||
file or in the input below.
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="Input theme round black disabled invalid"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
disabled=""
|
|
||||||
placeholder="Custom Extension Registry URL..."
|
|
||||||
spellcheck="false"
|
|
||||||
value="some-custom-url"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="other"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Start-up
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Automatically start Lens on login
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="update-channel"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Update Channel
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-update-channel-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__single-value css-qc6sy-singleValue"
|
|
||||||
>
|
|
||||||
Stable
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="update-channel-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="locale"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Locale Timezone
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-timezone-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-timezone-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-timezone-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="timezone-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`preferences - navigation to editor preferences given in preferences, when rendered when navigating to editor preferences using navigation renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="editor-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="editor"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="editor-configuration-header"
|
|
||||||
>
|
|
||||||
Editor configuration
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Minimap
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="flex gaps justify-space-between"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="flex gaps align-center"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Show minimap
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex gaps align-center"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubHeader compact"
|
|
||||||
>
|
|
||||||
Position
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-minimap-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-minimap-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-minimap-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="minimap-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Line numbers
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-editor-line-numbers-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-editor-line-numbers-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-editor-line-numbers-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="editor-line-numbers-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Tab size
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
min="1"
|
|
||||||
spellcheck="false"
|
|
||||||
type="number"
|
|
||||||
value="42"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Font size
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
min="10"
|
|
||||||
spellcheck="false"
|
|
||||||
type="number"
|
|
||||||
value="42"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Font family
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
spellcheck="false"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,993 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`preferences - navigation to kubernetes preferences given in preferences, when rendered renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="application-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="application"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="application-header"
|
|
||||||
>
|
|
||||||
Application
|
|
||||||
</h2>
|
|
||||||
<section
|
|
||||||
id="appearance"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Theme
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-theme-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-theme-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-theme-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="theme-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="extensionRegistryUrl"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Extension Install Registry
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-extension-install-registry-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-extension-install-registry-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-extension-install-registry-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="extension-install-registry-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p
|
|
||||||
class="mt-4 mb-5 leading-relaxed"
|
|
||||||
>
|
|
||||||
This setting is to change the registry URL for installing extensions by name.
|
|
||||||
If you are unable to access the default registry (https://registry.npmjs.org) you can change it in your
|
|
||||||
<b>
|
|
||||||
.npmrc
|
|
||||||
</b>
|
|
||||||
file or in the input below.
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="Input theme round black disabled invalid"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
disabled=""
|
|
||||||
placeholder="Custom Extension Registry URL..."
|
|
||||||
spellcheck="false"
|
|
||||||
value="some-custom-url"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="other"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Start-up
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Automatically start Lens on login
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="update-channel"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Update Channel
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-update-channel-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__single-value css-qc6sy-singleValue"
|
|
||||||
>
|
|
||||||
Stable
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="update-channel-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="locale"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Locale Timezone
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-timezone-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-timezone-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-timezone-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="timezone-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`preferences - navigation to kubernetes preferences given in preferences, when rendered when navigating to kubernetes preferences using navigation renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="kubernetes-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="kubernetes"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="kubectl"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="kubernetes-header"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</h2>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Kubectl binary download
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Download kubectl binaries matching the Kubernetes cluster version
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Download mirror
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens Select--is-disabled css-3iigni-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-download-mirror-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control Select__control--is-disabled css-1insrsq-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-download-mirror-input-placeholder"
|
|
||||||
>
|
|
||||||
Download mirror for kubectl
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-jzldcf-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-download-mirror-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
disabled=""
|
|
||||||
id="download-mirror-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-109onse-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Directory for binaries
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black disabled"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
disabled=""
|
|
||||||
placeholder="/some-absolute-root-directory/some-electron-app-path-for-user-data/binaries"
|
|
||||||
spellcheck="false"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="hint"
|
|
||||||
>
|
|
||||||
The directory to download binaries into.
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Path to kubectl binary
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
placeholder="/some-absolute-root-directory/some-electron-app-path-for-user-data/binaries/kubectl"
|
|
||||||
spellcheck="false"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="kube-sync"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="kubernetes-sync-header"
|
|
||||||
>
|
|
||||||
Kubeconfig Syncs
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
class="self-start mb-5"
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
class="Button PathPicker primary"
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
Sync Files and Folders
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SubTitle pt-5"
|
|
||||||
>
|
|
||||||
Synced Items
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="notice mt-3"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="flex-grow text-center"
|
|
||||||
>
|
|
||||||
No files and folders have been synced yet
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="helm"
|
|
||||||
>
|
|
||||||
<h2>
|
|
||||||
Helm Charts
|
|
||||||
</h2>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
data-testid="helm-controls"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="flex gaps"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens box grow css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-selection-of-active-public-helm-repository-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-selection-of-active-public-helm-repository-placeholder"
|
|
||||||
>
|
|
||||||
Repositories
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-selection-of-active-public-helm-repository-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="selection-of-active-public-helm-repository"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
class="Button primary"
|
|
||||||
data-testid="add-custom-helm-repo-button"
|
|
||||||
type="button"
|
|
||||||
>
|
|
||||||
Add Custom Helm Repo
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="repos"
|
|
||||||
/>
|
|
||||||
<div />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,755 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`preferences - navigation to proxy preferences given in preferences, when rendered renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="application-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="application"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="application-header"
|
|
||||||
>
|
|
||||||
Application
|
|
||||||
</h2>
|
|
||||||
<section
|
|
||||||
id="appearance"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Theme
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-theme-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-theme-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-theme-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="theme-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="extensionRegistryUrl"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Extension Install Registry
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-extension-install-registry-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-extension-install-registry-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-extension-install-registry-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="extension-install-registry-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p
|
|
||||||
class="mt-4 mb-5 leading-relaxed"
|
|
||||||
>
|
|
||||||
This setting is to change the registry URL for installing extensions by name.
|
|
||||||
If you are unable to access the default registry (https://registry.npmjs.org) you can change it in your
|
|
||||||
<b>
|
|
||||||
.npmrc
|
|
||||||
</b>
|
|
||||||
file or in the input below.
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="Input theme round black disabled invalid"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
disabled=""
|
|
||||||
placeholder="Custom Extension Registry URL..."
|
|
||||||
spellcheck="false"
|
|
||||||
value="some-custom-url"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="other"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Start-up
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Automatically start Lens on login
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="update-channel"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Update Channel
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-update-channel-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__single-value css-qc6sy-singleValue"
|
|
||||||
>
|
|
||||||
Stable
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="update-channel-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="locale"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Locale Timezone
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-timezone-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-timezone-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-timezone-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="timezone-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`preferences - navigation to proxy preferences given in preferences, when rendered when navigating to proxy preferences using navigation renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="proxy-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="proxy"
|
|
||||||
>
|
|
||||||
<section>
|
|
||||||
<h2
|
|
||||||
data-testid="proxy-header"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
HTTP Proxy
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
placeholder="Type HTTP proxy url (example: http://proxy.acme.org:8080)"
|
|
||||||
spellcheck="false"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<small
|
|
||||||
class="hint"
|
|
||||||
>
|
|
||||||
Proxy is used only for non-cluster communication.
|
|
||||||
</small>
|
|
||||||
</section>
|
|
||||||
<hr
|
|
||||||
class="small"
|
|
||||||
/>
|
|
||||||
<section
|
|
||||||
class="small"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Certificate Trust
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Allow untrusted Certificate Authorities
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<small
|
|
||||||
class="hint"
|
|
||||||
>
|
|
||||||
This will make Lens to trust ANY certificate authority without any validations.
|
|
||||||
|
|
||||||
Needed with some corporate proxies that do certificate re-writing.
|
|
||||||
|
|
||||||
Does not affect cluster communications!
|
|
||||||
</small>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,930 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`preferences - navigation to terminal preferences given in preferences, when rendered renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="application-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="application"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="application-header"
|
|
||||||
>
|
|
||||||
Application
|
|
||||||
</h2>
|
|
||||||
<section
|
|
||||||
id="appearance"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Theme
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-theme-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-theme-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-theme-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="theme-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="extensionRegistryUrl"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Extension Install Registry
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-extension-install-registry-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-extension-install-registry-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-extension-install-registry-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="extension-install-registry-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p
|
|
||||||
class="mt-4 mb-5 leading-relaxed"
|
|
||||||
>
|
|
||||||
This setting is to change the registry URL for installing extensions by name.
|
|
||||||
If you are unable to access the default registry (https://registry.npmjs.org) you can change it in your
|
|
||||||
<b>
|
|
||||||
.npmrc
|
|
||||||
</b>
|
|
||||||
file or in the input below.
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="Input theme round black disabled invalid"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
disabled=""
|
|
||||||
placeholder="Custom Extension Registry URL..."
|
|
||||||
spellcheck="false"
|
|
||||||
value="some-custom-url"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="other"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Start-up
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Automatically start Lens on login
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="update-channel"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Update Channel
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-update-channel-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__single-value css-qc6sy-singleValue"
|
|
||||||
>
|
|
||||||
Stable
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="update-channel-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="locale"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Locale Timezone
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-timezone-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-timezone-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-timezone-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="timezone-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`preferences - navigation to terminal preferences given in preferences, when rendered when navigating to terminal preferences using navigation renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="terminal-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section>
|
|
||||||
<h2>
|
|
||||||
Terminal
|
|
||||||
</h2>
|
|
||||||
<section
|
|
||||||
id="shell"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Terminal Shell Path
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
placeholder="some-default-shell"
|
|
||||||
spellcheck="false"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section
|
|
||||||
id="terminalSelection"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Terminal copy & paste
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Copy on select and paste on right-click
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<section
|
|
||||||
id="terminalTheme"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Terminal theme
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-terminal-theme-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-terminal-theme-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-terminal-theme-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="terminal-theme-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Font size
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Input theme round black"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
max="50"
|
|
||||||
min="10"
|
|
||||||
spellcheck="false"
|
|
||||||
type="number"
|
|
||||||
value="42"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Font family
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-2-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-2-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-2-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="react-select-2-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,558 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`preferences - navigation using application menu renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`preferences - navigation using application menu when navigating to preferences using application menu renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="application-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="application"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="application-header"
|
|
||||||
>
|
|
||||||
Application
|
|
||||||
</h2>
|
|
||||||
<section
|
|
||||||
id="appearance"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Theme
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-theme-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-theme-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-theme-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="theme-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="extensionRegistryUrl"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Extension Install Registry
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-extension-install-registry-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-extension-install-registry-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-extension-install-registry-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="extension-install-registry-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p
|
|
||||||
class="mt-4 mb-5 leading-relaxed"
|
|
||||||
>
|
|
||||||
This setting is to change the registry URL for installing extensions by name.
|
|
||||||
If you are unable to access the default registry (https://registry.npmjs.org) you can change it in your
|
|
||||||
<b>
|
|
||||||
.npmrc
|
|
||||||
</b>
|
|
||||||
file or in the input below.
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="Input theme round black disabled invalid"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
disabled=""
|
|
||||||
placeholder="Custom Extension Registry URL..."
|
|
||||||
spellcheck="false"
|
|
||||||
value="some-custom-url"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="other"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Start-up
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Automatically start Lens on login
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="update-channel"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Update Channel
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-update-channel-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__single-value css-qc6sy-singleValue"
|
|
||||||
>
|
|
||||||
Stable
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="update-channel-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="locale"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Locale Timezone
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-timezone-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-timezone-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-timezone-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="timezone-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,562 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`show-about-using-tray renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`show-about-using-tray when navigating using tray renders 1`] = `
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="SettingLayout showNavigation Preferences"
|
|
||||||
data-testid="application-preferences-page"
|
|
||||||
>
|
|
||||||
<nav
|
|
||||||
class="sidebarRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="sidebar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Tabs flex column"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="header"
|
|
||||||
>
|
|
||||||
Preferences
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center active"
|
|
||||||
data-testid="tab-link-for-application"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
App
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-proxy"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Proxy
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-kubernetes"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Kubernetes
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-editor"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Editor
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Tab flex gaps align-center"
|
|
||||||
data-testid="tab-link-for-terminal"
|
|
||||||
role="tab"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="label"
|
|
||||||
>
|
|
||||||
Terminal
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div
|
|
||||||
class="contentRegion"
|
|
||||||
id="ScrollSpyRoot"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="content"
|
|
||||||
>
|
|
||||||
<section
|
|
||||||
id="application"
|
|
||||||
>
|
|
||||||
<h2
|
|
||||||
data-testid="application-header"
|
|
||||||
>
|
|
||||||
Application
|
|
||||||
</h2>
|
|
||||||
<section
|
|
||||||
id="appearance"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Theme
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-theme-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-theme-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-theme-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="theme-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="extensionRegistryUrl"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Extension Install Registry
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-extension-install-registry-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-extension-install-registry-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-extension-install-registry-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="extension-install-registry-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p
|
|
||||||
class="mt-4 mb-5 leading-relaxed"
|
|
||||||
>
|
|
||||||
This setting is to change the registry URL for installing extensions by name.
|
|
||||||
If you are unable to access the default registry (https://registry.npmjs.org) you can change it in your
|
|
||||||
<b>
|
|
||||||
.npmrc
|
|
||||||
</b>
|
|
||||||
file or in the input below.
|
|
||||||
</p>
|
|
||||||
<div
|
|
||||||
class="Input theme round black disabled invalid"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="input-area flex gaps align-center"
|
|
||||||
id=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
class="input box grow"
|
|
||||||
disabled=""
|
|
||||||
placeholder="Custom Extension Registry URL..."
|
|
||||||
spellcheck="false"
|
|
||||||
value="some-custom-url"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
class="input-info flex gaps"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="other"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Start-up
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<label
|
|
||||||
class="Switch"
|
|
||||||
data-testid="switch"
|
|
||||||
>
|
|
||||||
Automatically start Lens on login
|
|
||||||
<input
|
|
||||||
role="switch"
|
|
||||||
type="checkbox"
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="update-channel"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Update Channel
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-update-channel-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container Select__value-container--has-value css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__single-value css-qc6sy-singleValue"
|
|
||||||
>
|
|
||||||
Stable
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="update-channel-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr />
|
|
||||||
<section
|
|
||||||
id="locale"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="SubTitle"
|
|
||||||
>
|
|
||||||
Locale Timezone
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select theme-lens css-b62m3t-container"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
id="react-select-timezone-input-live-region"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
aria-atomic="false"
|
|
||||||
aria-live="polite"
|
|
||||||
aria-relevant="additions text"
|
|
||||||
class="css-1f43avz-a11yText-A11yText"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="Select__control css-1s2u09g-control"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__value-container css-319lph-ValueContainer"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="Select__placeholder css-14el2xx-placeholder"
|
|
||||||
id="react-select-timezone-input-placeholder"
|
|
||||||
>
|
|
||||||
Select...
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__input-container css-6j8wv5-Input"
|
|
||||||
data-value=""
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
aria-autocomplete="list"
|
|
||||||
aria-describedby="react-select-timezone-input-placeholder"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-haspopup="true"
|
|
||||||
autocapitalize="none"
|
|
||||||
autocomplete="off"
|
|
||||||
autocorrect="off"
|
|
||||||
class="Select__input"
|
|
||||||
id="timezone-input"
|
|
||||||
role="combobox"
|
|
||||||
spellcheck="false"
|
|
||||||
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
|
||||||
tabindex="0"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Select__indicators css-1hb7zxy-IndicatorsContainer"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="Select__indicator-separator css-1okebmr-indicatorSeparator"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="Select__indicator Select__dropdown-indicator css-tlfecz-indicatorContainer"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
class="css-tj5bde-Svg"
|
|
||||||
focusable="false"
|
|
||||||
height="20"
|
|
||||||
viewBox="0 0 20 20"
|
|
||||||
width="20"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="toolsRegion"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="fixed top-[60px]"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="close-preferences"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
aria-label="Close"
|
|
||||||
class="closeButton"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon icon material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="close"
|
|
||||||
>
|
|
||||||
close
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
aria-hidden="true"
|
|
||||||
class="esc"
|
|
||||||
>
|
|
||||||
ESC
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
`;
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { LensMainExtension } from "../../extensions/lens-main-extension";
|
|
||||||
import type { TrayMenuRegistration } from "../../main/tray/tray-menu-registration";
|
|
||||||
import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
|
||||||
import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
|
||||||
import getRandomIdInjectable from "../../common/utils/get-random-id.injectable";
|
|
||||||
|
|
||||||
describe("multiple separators originating from extension", () => {
|
|
||||||
let applicationBuilder: ApplicationBuilder;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
applicationBuilder = getApplicationBuilder();
|
|
||||||
|
|
||||||
applicationBuilder.beforeApplicationStart(({ mainDi }) => {
|
|
||||||
mainDi.unoverride(getRandomIdInjectable);
|
|
||||||
mainDi.permitSideEffects(getRandomIdInjectable);
|
|
||||||
});
|
|
||||||
|
|
||||||
await applicationBuilder.render();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("given extension with multiple separators, when extension is enabled, does not throw", () => {
|
|
||||||
const someExtension = new SomeTestExtension({
|
|
||||||
id: "some-extension-id",
|
|
||||||
trayMenus: [{ type: "separator" }, { type: "separator" } ],
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(() => {
|
|
||||||
applicationBuilder.extensions.main.enable(someExtension);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
class SomeTestExtension extends LensMainExtension {
|
|
||||||
constructor({ id, trayMenus }: {
|
|
||||||
id: string;
|
|
||||||
trayMenus: TrayMenuRegistration[];
|
|
||||||
}) {
|
|
||||||
super({
|
|
||||||
id,
|
|
||||||
absolutePath: "irrelevant",
|
|
||||||
isBundled: false,
|
|
||||||
isCompatible: false,
|
|
||||||
isEnabled: false,
|
|
||||||
manifest: { name: id, version: "some-version", engines: { lens: "^5.5.0" }},
|
|
||||||
manifestPath: "irrelevant",
|
|
||||||
});
|
|
||||||
|
|
||||||
this.trayMenus = trayMenus;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,120 +0,0 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
||||||
|
|
||||||
exports[`welcome - navigation using application menu renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
exports[`welcome - navigation using application menu when navigating to welcome using application menu renders 1`] = `
|
|
||||||
<div>
|
|
||||||
<div
|
|
||||||
class="StatusBar"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="leftSide"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
class="rightSide"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="flex justify-center Welcome align-center"
|
|
||||||
data-testid="welcome-page"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="welcome-banner-container"
|
|
||||||
style="width: 320px;"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon logo svg focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
/>
|
|
||||||
</i>
|
|
||||||
<div
|
|
||||||
class="flex justify-center"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-testid="welcome-text-container"
|
|
||||||
style="width: 320px;"
|
|
||||||
>
|
|
||||||
<h2>
|
|
||||||
Welcome to OpenLens 5!
|
|
||||||
</h2>
|
|
||||||
<p>
|
|
||||||
To get you started we have auto-detected your clusters in your
|
|
||||||
|
|
||||||
kubeconfig file and added them to the catalog, your centralized
|
|
||||||
|
|
||||||
view for managing all your cloud-native resources.
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
If you have any questions or feedback, please join our
|
|
||||||
<a
|
|
||||||
class="link"
|
|
||||||
href="https://join.slack.com/t/k8slens/shared_invite/zt-wcl8jq3k-68R5Wcmk1o95MLBE5igUDQ"
|
|
||||||
rel="noreferrer"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
Lens Community slack channel
|
|
||||||
</a>
|
|
||||||
.
|
|
||||||
</p>
|
|
||||||
<ul
|
|
||||||
class="block"
|
|
||||||
data-testid="welcome-menu-container"
|
|
||||||
style="width: 320px;"
|
|
||||||
>
|
|
||||||
<li
|
|
||||||
class="flex grid-12"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
class="Icon box col-1 material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="view_list"
|
|
||||||
>
|
|
||||||
view_list
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
<a
|
|
||||||
class="box col-10"
|
|
||||||
>
|
|
||||||
Browse Clusters in Catalog
|
|
||||||
</a>
|
|
||||||
<i
|
|
||||||
class="Icon box col-1 material focusable"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
data-icon-name="navigate_next"
|
|
||||||
>
|
|
||||||
navigate_next
|
|
||||||
</span>
|
|
||||||
</i>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="Notifications flex column align-flex-end"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import type { RenderResult } from "@testing-library/react";
|
|
||||||
import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
|
||||||
import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
|
||||||
|
|
||||||
describe("welcome - navigation using application menu", () => {
|
|
||||||
let applicationBuilder: ApplicationBuilder;
|
|
||||||
let rendered: RenderResult;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
applicationBuilder = getApplicationBuilder();
|
|
||||||
|
|
||||||
rendered = await applicationBuilder.render();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("renders", () => {
|
|
||||||
expect(rendered.container).toMatchSnapshot();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not show welcome page yet", () => {
|
|
||||||
const actual = rendered.queryByTestId("welcome-page");
|
|
||||||
|
|
||||||
expect(actual).toBeNull();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("when navigating to welcome using application menu", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
applicationBuilder.applicationMenu.click("help.welcome");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("renders", () => {
|
|
||||||
expect(rendered.container).toMatchSnapshot();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows welcome page", () => {
|
|
||||||
const actual = rendered.getByTestId("welcome-page");
|
|
||||||
|
|
||||||
expect(actual).not.toBeNull();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -7,14 +7,9 @@ import mockFs from "mock-fs";
|
|||||||
import { BaseStore } from "../base-store";
|
import { BaseStore } from "../base-store";
|
||||||
import { action, comparer, makeObservable, observable, toJS } from "mobx";
|
import { action, comparer, makeObservable, observable, toJS } from "mobx";
|
||||||
import { readFileSync } from "fs";
|
import { readFileSync } from "fs";
|
||||||
|
import directoryForUserDataInjectable from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
import directoryForUserDataInjectable
|
|
||||||
from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
|
||||||
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
||||||
import getConfigurationFileModelInjectable
|
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
||||||
from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
|
||||||
import appVersionInjectable
|
|
||||||
from "../get-configuration-file-model/app-version/app-version.injectable";
|
|
||||||
|
|
||||||
jest.mock("electron", () => ({
|
jest.mock("electron", () => ({
|
||||||
ipcMain: {
|
ipcMain: {
|
||||||
@ -86,7 +81,6 @@ describe("BaseStore", () => {
|
|||||||
|
|
||||||
mainDi.override(directoryForUserDataInjectable, () => "some-user-data-directory");
|
mainDi.override(directoryForUserDataInjectable, () => "some-user-data-directory");
|
||||||
mainDi.permitSideEffects(getConfigurationFileModelInjectable);
|
mainDi.permitSideEffects(getConfigurationFileModelInjectable);
|
||||||
mainDi.permitSideEffects(appVersionInjectable);
|
|
||||||
|
|
||||||
TestStore.resetInstance();
|
TestStore.resetInstance();
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import { createClusterInjectionToken } from "../cluster/create-cluster-injection
|
|||||||
import directoryForUserDataInjectable from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
import directoryForUserDataInjectable from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
||||||
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
||||||
import appVersionInjectable from "../get-configuration-file-model/app-version/app-version.injectable";
|
import appVersionInjectable from "../vars/app-version.injectable";
|
||||||
import assert from "assert";
|
import assert from "assert";
|
||||||
import directoryForTempInjectable from "../app-paths/directory-for-temp/directory-for-temp.injectable";
|
import directoryForTempInjectable from "../app-paths/directory-for-temp/directory-for-temp.injectable";
|
||||||
import kubectlBinaryNameInjectable from "../../main/kubectl/binary-name.injectable";
|
import kubectlBinaryNameInjectable from "../../main/kubectl/binary-name.injectable";
|
||||||
@ -93,7 +93,6 @@ describe("cluster-store", () => {
|
|||||||
mainDi.override(normalizedPlatformInjectable, () => "darwin");
|
mainDi.override(normalizedPlatformInjectable, () => "darwin");
|
||||||
|
|
||||||
mainDi.permitSideEffects(getConfigurationFileModelInjectable);
|
mainDi.permitSideEffects(getConfigurationFileModelInjectable);
|
||||||
mainDi.permitSideEffects(appVersionInjectable);
|
|
||||||
mainDi.permitSideEffects(clusterStoreInjectable);
|
mainDi.permitSideEffects(clusterStoreInjectable);
|
||||||
mainDi.permitSideEffects(fsInjectable);
|
mainDi.permitSideEffects(fsInjectable);
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import mockFs from "mock-fs";
|
|||||||
import type { CatalogEntity, CatalogEntityData, CatalogEntityKindData } from "../catalog";
|
import type { CatalogEntity, CatalogEntityData, CatalogEntityKindData } from "../catalog";
|
||||||
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
||||||
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
||||||
import appVersionInjectable from "../get-configuration-file-model/app-version/app-version.injectable";
|
import appVersionInjectable from "../vars/app-version.injectable";
|
||||||
import type { DiContainer } from "@ogre-tools/injectable";
|
import type { DiContainer } from "@ogre-tools/injectable";
|
||||||
import hotbarStoreInjectable from "../hotbars/store.injectable";
|
import hotbarStoreInjectable from "../hotbars/store.injectable";
|
||||||
import type { HotbarStore } from "../hotbars/store";
|
import type { HotbarStore } from "../hotbars/store";
|
||||||
@ -113,7 +113,6 @@ describe("HotbarStore", () => {
|
|||||||
]));
|
]));
|
||||||
|
|
||||||
di.permitSideEffects(getConfigurationFileModelInjectable);
|
di.permitSideEffects(getConfigurationFileModelInjectable);
|
||||||
di.permitSideEffects(appVersionInjectable);
|
|
||||||
di.permitSideEffects(hotbarStoreInjectable);
|
di.permitSideEffects(hotbarStoreInjectable);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
12
src/common/__tests__/timezones.test.ts
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
describe("Timezones", () => {
|
||||||
|
it("should always be UTC", () => {
|
||||||
|
expect(new Date().getTimezoneOffset()).toBe(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
export {};
|
||||||
@ -34,7 +34,7 @@ import { defaultThemeId } from "../vars";
|
|||||||
import writeFileInjectable from "../fs/write-file.injectable";
|
import writeFileInjectable from "../fs/write-file.injectable";
|
||||||
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
||||||
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
||||||
import appVersionInjectable from "../get-configuration-file-model/app-version/app-version.injectable";
|
import appVersionInjectable from "../vars/app-version.injectable";
|
||||||
|
|
||||||
console = new Console(stdout, stderr);
|
console = new Console(stdout, stderr);
|
||||||
|
|
||||||
@ -50,8 +50,6 @@ describe("user store tests", () => {
|
|||||||
di.override(writeFileInjectable, () => () => Promise.resolve());
|
di.override(writeFileInjectable, () => () => Promise.resolve());
|
||||||
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
|
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
|
||||||
di.permitSideEffects(getConfigurationFileModelInjectable);
|
di.permitSideEffects(getConfigurationFileModelInjectable);
|
||||||
|
|
||||||
di.permitSideEffects(appVersionInjectable);
|
|
||||||
di.permitSideEffects(userStoreInjectable);
|
di.permitSideEffects(userStoreInjectable);
|
||||||
|
|
||||||
di.unoverride(userStoreInjectable);
|
di.unoverride(userStoreInjectable);
|
||||||
|
|||||||
@ -0,0 +1,8 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getGlobalOverride } from "../test-utils/get-global-override";
|
||||||
|
import emitEventInjectable from "./emit-event.injectable";
|
||||||
|
|
||||||
|
export default getGlobalOverride(emitEventInjectable, () => () => {});
|
||||||
@ -9,6 +9,7 @@ const appEventBusInjectable = getInjectable({
|
|||||||
id: "app-event-bus",
|
id: "app-event-bus",
|
||||||
instantiate: () => appEventBus,
|
instantiate: () => appEventBus,
|
||||||
causesSideEffects: true,
|
causesSideEffects: true,
|
||||||
|
decorable: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
export default appEventBusInjectable;
|
export default appEventBusInjectable;
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import appEventBusInjectable from "./app-event-bus.injectable";
|
|||||||
const emitEventInjectable = getInjectable({
|
const emitEventInjectable = getInjectable({
|
||||||
id: "emit-event",
|
id: "emit-event",
|
||||||
instantiate: (di) => di.inject(appEventBusInjectable).emit,
|
instantiate: (di) => di.inject(appEventBusInjectable).emit,
|
||||||
|
decorable: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
export default emitEventInjectable;
|
export default emitEventInjectable;
|
||||||
|
|||||||
@ -14,15 +14,10 @@ import { getApplicationBuilder } from "../../renderer/components/test-utils/get-
|
|||||||
import type { DiContainer } from "@ogre-tools/injectable";
|
import type { DiContainer } from "@ogre-tools/injectable";
|
||||||
|
|
||||||
describe("app-paths", () => {
|
describe("app-paths", () => {
|
||||||
let applicationBuilder: ApplicationBuilder;
|
let builder: ApplicationBuilder;
|
||||||
let rendererDi: DiContainer;
|
|
||||||
let mainDi: DiContainer;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
applicationBuilder = getApplicationBuilder();
|
builder = getApplicationBuilder();
|
||||||
|
|
||||||
rendererDi = applicationBuilder.dis.rendererDi;
|
|
||||||
mainDi = applicationBuilder.dis.mainDi;
|
|
||||||
|
|
||||||
const defaultAppPathsStub: AppPaths = {
|
const defaultAppPathsStub: AppPaths = {
|
||||||
appData: "some-app-data",
|
appData: "some-app-data",
|
||||||
@ -43,7 +38,7 @@ describe("app-paths", () => {
|
|||||||
userData: "some-irrelevant-user-data",
|
userData: "some-irrelevant-user-data",
|
||||||
};
|
};
|
||||||
|
|
||||||
applicationBuilder.beforeApplicationStart(({ mainDi }) => {
|
builder.beforeApplicationStart((mainDi) => {
|
||||||
mainDi.override(
|
mainDi.override(
|
||||||
getElectronAppPathInjectable,
|
getElectronAppPathInjectable,
|
||||||
() =>
|
() =>
|
||||||
@ -64,12 +59,18 @@ describe("app-paths", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("normally", () => {
|
describe("normally", () => {
|
||||||
|
let windowDi: DiContainer;
|
||||||
|
let mainDi: DiContainer;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await applicationBuilder.render();
|
await builder.render();
|
||||||
|
|
||||||
|
windowDi = builder.applicationWindow.only.di;
|
||||||
|
mainDi = builder.mainDi;
|
||||||
});
|
});
|
||||||
|
|
||||||
it("given in renderer, when injecting app paths, returns application specific app paths", () => {
|
it("given in renderer, when injecting app paths, returns application specific app paths", () => {
|
||||||
const actual = rendererDi.inject(appPathsInjectionToken);
|
const actual = windowDi.inject(appPathsInjectionToken);
|
||||||
|
|
||||||
expect(actual).toEqual({
|
expect(actual).toEqual({
|
||||||
appData: "some-app-data",
|
appData: "some-app-data",
|
||||||
@ -116,19 +117,23 @@ describe("app-paths", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("when running integration tests", () => {
|
describe("when running integration tests", () => {
|
||||||
|
let windowDi: DiContainer;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
applicationBuilder.beforeApplicationStart(({ mainDi }) => {
|
builder.beforeApplicationStart((mainDi) => {
|
||||||
mainDi.override(
|
mainDi.override(
|
||||||
directoryForIntegrationTestingInjectable,
|
directoryForIntegrationTestingInjectable,
|
||||||
() => "some-integration-testing-app-data",
|
() => "some-integration-testing-app-data",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
await applicationBuilder.render();
|
await builder.render();
|
||||||
|
|
||||||
|
windowDi = builder.applicationWindow.only.di;
|
||||||
});
|
});
|
||||||
|
|
||||||
it("given in renderer, when injecting path for app data, has integration specific app data path", () => {
|
it("given in renderer, when injecting path for app data, has integration specific app data path", () => {
|
||||||
const { appData, userData } = rendererDi.inject(appPathsInjectionToken);
|
const { appData, userData } = windowDi.inject(appPathsInjectionToken);
|
||||||
|
|
||||||
expect({ appData, userData }).toEqual({
|
expect({ appData, userData }).toEqual({
|
||||||
appData: "some-integration-testing-app-data",
|
appData: "some-integration-testing-app-data",
|
||||||
@ -137,7 +142,7 @@ describe("app-paths", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("given in main, when injecting path for app data, has integration specific app data path", () => {
|
it("given in main, when injecting path for app data, has integration specific app data path", () => {
|
||||||
const { appData, userData } = rendererDi.inject(appPathsInjectionToken);
|
const { appData, userData } = windowDi.inject(appPathsInjectionToken);
|
||||||
|
|
||||||
expect({ appData, userData }).toEqual({
|
expect({ appData, userData }).toEqual({
|
||||||
appData: "some-integration-testing-app-data",
|
appData: "some-integration-testing-app-data",
|
||||||
|
|||||||
@ -1,29 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
|
||||||
import type { MessageChannel } from "../utils/channel/message-channel-injection-token";
|
|
||||||
import { messageChannelInjectionToken } from "../utils/channel/message-channel-injection-token";
|
|
||||||
|
|
||||||
export type ApplicationUpdateStatusEventId =
|
|
||||||
| "checking-for-updates"
|
|
||||||
| "no-updates-available"
|
|
||||||
| "download-for-update-started"
|
|
||||||
| "download-for-update-failed";
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
||||||
export type ApplicationUpdateStatusChannelMessage = { eventId: ApplicationUpdateStatusEventId; version?: string };
|
|
||||||
export type ApplicationUpdateStatusChannel = MessageChannel<ApplicationUpdateStatusChannelMessage>;
|
|
||||||
|
|
||||||
const applicationUpdateStatusChannelInjectable = getInjectable({
|
|
||||||
id: "application-update-status-channel",
|
|
||||||
|
|
||||||
instantiate: (): ApplicationUpdateStatusChannel => ({
|
|
||||||
id: "application-update-status-channel",
|
|
||||||
}),
|
|
||||||
|
|
||||||
injectionToken: messageChannelInjectionToken,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default applicationUpdateStatusChannelInjectable;
|
|
||||||
@ -5,21 +5,21 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
||||||
import type { UpdateChannel } from "../update-channels";
|
import type { UpdateChannel } from "../update-channels";
|
||||||
|
import type { SyncBox } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
|
|
||||||
|
export type DiscoveredUpdateVersion = SyncBox<{ version: string; updateChannel: UpdateChannel } | null>;
|
||||||
|
|
||||||
const discoveredUpdateVersionInjectable = getInjectable({
|
const discoveredUpdateVersionInjectable = getInjectable({
|
||||||
id: "discovered-update-version",
|
id: "discovered-update-version",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const createSyncBox = di.inject(createSyncBoxInjectable);
|
const createSyncBox = di.inject(createSyncBoxInjectable);
|
||||||
|
|
||||||
return createSyncBox<
|
return createSyncBox(
|
||||||
| { version: string; updateChannel: UpdateChannel }
|
"discovered-update-version",
|
||||||
| null
|
null,
|
||||||
>(
|
) as DiscoveredUpdateVersion;
|
||||||
"discovered-update-version",
|
|
||||||
null,
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
injectionToken: syncBoxInjectionToken,
|
injectionToken: syncBoxInjectionToken,
|
||||||
|
|||||||
@ -4,12 +4,16 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
||||||
|
import type { SyncBox } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
|
|
||||||
export interface ProgressOfDownload {
|
export interface ProgressOfDownload {
|
||||||
percentage: number;
|
percentage: number;
|
||||||
|
failed?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type ProgressOfUpdateDownload = SyncBox<ProgressOfDownload>;
|
||||||
|
|
||||||
const progressOfUpdateDownloadInjectable = getInjectable({
|
const progressOfUpdateDownloadInjectable = getInjectable({
|
||||||
id: "progress-of-update-download-state",
|
id: "progress-of-update-download-state",
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import type { MessageChannel } from "../../utils/channel/message-channel-injection-token";
|
||||||
|
import { messageChannelInjectionToken } from "../../utils/channel/message-channel-injection-token";
|
||||||
|
|
||||||
|
export type RestartAndInstallUpdateChannel = MessageChannel;
|
||||||
|
|
||||||
|
const restartAndInstallUpdateChannel = getInjectable({
|
||||||
|
id: "restart-and-install-update-channel",
|
||||||
|
|
||||||
|
instantiate: (): RestartAndInstallUpdateChannel => ({
|
||||||
|
id: "restart-and-install-update-channel",
|
||||||
|
}),
|
||||||
|
|
||||||
|
injectionToken: messageChannelInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default restartAndInstallUpdateChannel;
|
||||||
@ -3,8 +3,7 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { SemVer } from "semver";
|
import appSemanticVersionInjectable from "../../vars/app-semantic-version.injectable";
|
||||||
import appVersionInjectable from "../../get-configuration-file-model/app-version/app-version.injectable";
|
|
||||||
import type { UpdateChannelId } from "../update-channels";
|
import type { UpdateChannelId } from "../update-channels";
|
||||||
import { updateChannels } from "../update-channels";
|
import { updateChannels } from "../update-channels";
|
||||||
|
|
||||||
@ -12,12 +11,11 @@ const defaultUpdateChannelInjectable = getInjectable({
|
|||||||
id: "default-update-channel",
|
id: "default-update-channel",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const appVersion = di.inject(appVersionInjectable);
|
const appSemanticVersion = di.inject(appSemanticVersionInjectable);
|
||||||
|
const currentReleaseChannel = appSemanticVersion.prerelease[0]?.toString();
|
||||||
|
|
||||||
const currentReleaseChannel = new SemVer(appVersion).prerelease[0]?.toString() as UpdateChannelId;
|
if (currentReleaseChannel in updateChannels) {
|
||||||
|
return updateChannels[currentReleaseChannel as UpdateChannelId];
|
||||||
if (currentReleaseChannel && updateChannels[currentReleaseChannel]) {
|
|
||||||
return updateChannels[currentReleaseChannel];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return updateChannels.latest;
|
return updateChannels.latest;
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
||||||
|
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
|
|
||||||
|
const updateDownloadedDateTimeInjectable = getInjectable({
|
||||||
|
id: "update-downloaded-date-time",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const createSyncBox = di.inject(createSyncBoxInjectable);
|
||||||
|
|
||||||
|
return createSyncBox<string | null>(
|
||||||
|
"update-downloaded-date-time",
|
||||||
|
null,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
injectionToken: syncBoxInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default updateDownloadedDateTimeInjectable;
|
||||||
@ -4,8 +4,11 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
||||||
|
import type { SyncBox } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
|
|
||||||
|
export type UpdateIsBeingDownloaded = SyncBox<boolean>;
|
||||||
|
|
||||||
const updateIsBeingDownloadedInjectable = getInjectable({
|
const updateIsBeingDownloadedInjectable = getInjectable({
|
||||||
id: "update-is-being-downloaded",
|
id: "update-is-being-downloaded",
|
||||||
|
|
||||||
|
|||||||
@ -4,8 +4,11 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
import createSyncBoxInjectable from "../../utils/sync-box/create-sync-box.injectable";
|
||||||
|
import type { SyncBox } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
import { syncBoxInjectionToken } from "../../utils/sync-box/sync-box-injection-token";
|
||||||
|
|
||||||
|
export type UpdatesAreBeingDiscovered = SyncBox<boolean>;
|
||||||
|
|
||||||
const updatesAreBeingDiscoveredInjectable = getInjectable({
|
const updatesAreBeingDiscoveredInjectable = getInjectable({
|
||||||
id: "updates-are-being-discovered",
|
id: "updates-are-being-discovered",
|
||||||
|
|
||||||
|
|||||||
@ -1,21 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
|
||||||
import type { MessageChannel } from "../utils/channel/message-channel-injection-token";
|
|
||||||
import { messageChannelInjectionToken } from "../utils/channel/message-channel-injection-token";
|
|
||||||
|
|
||||||
export type AskBooleanAnswerChannel = MessageChannel<{ id: string; value: boolean }>;
|
|
||||||
|
|
||||||
const askBooleanAnswerChannelInjectable = getInjectable({
|
|
||||||
id: "ask-boolean-answer-channel",
|
|
||||||
|
|
||||||
instantiate: (): AskBooleanAnswerChannel => ({
|
|
||||||
id: "ask-boolean-answer",
|
|
||||||
}),
|
|
||||||
|
|
||||||
injectionToken: messageChannelInjectionToken,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default askBooleanAnswerChannelInjectable;
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
|
||||||
import type { MessageChannel } from "../utils/channel/message-channel-injection-token";
|
|
||||||
import { messageChannelInjectionToken } from "../utils/channel/message-channel-injection-token";
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
||||||
export type AskBooleanQuestionParameters = { id: string; title: string; question: string };
|
|
||||||
export type AskBooleanQuestionChannel = MessageChannel<AskBooleanQuestionParameters>;
|
|
||||||
|
|
||||||
const askBooleanQuestionChannelInjectable = getInjectable({
|
|
||||||
id: "ask-boolean-question-channel",
|
|
||||||
|
|
||||||
instantiate: (): AskBooleanQuestionChannel => ({
|
|
||||||
id: "ask-boolean-question",
|
|
||||||
}),
|
|
||||||
|
|
||||||
injectionToken: messageChannelInjectionToken,
|
|
||||||
});
|
|
||||||
|
|
||||||
export default askBooleanQuestionChannelInjectable;
|
|
||||||
@ -19,7 +19,7 @@ import { kebabCase } from "lodash";
|
|||||||
import { getLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
import { getLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
||||||
import directoryForUserDataInjectable from "./app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
import directoryForUserDataInjectable from "./app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
import getConfigurationFileModelInjectable from "./get-configuration-file-model/get-configuration-file-model.injectable";
|
import getConfigurationFileModelInjectable from "./get-configuration-file-model/get-configuration-file-model.injectable";
|
||||||
import appVersionInjectable from "./get-configuration-file-model/app-version/app-version.injectable";
|
import appVersionInjectable from "./vars/app-version.injectable";
|
||||||
|
|
||||||
export interface BaseStoreParams<T> extends ConfOptions<T> {
|
export interface BaseStoreParams<T> extends ConfOptions<T> {
|
||||||
syncOptions?: {
|
syncOptions?: {
|
||||||
@ -31,7 +31,7 @@ export interface BaseStoreParams<T> extends ConfOptions<T> {
|
|||||||
/**
|
/**
|
||||||
* Note: T should only contain base JSON serializable types.
|
* Note: T should only contain base JSON serializable types.
|
||||||
*/
|
*/
|
||||||
export abstract class BaseStore<T> extends Singleton {
|
export abstract class BaseStore<T extends object> extends Singleton {
|
||||||
protected storeConfig?: Config<T>;
|
protected storeConfig?: Config<T>;
|
||||||
protected syncDisposers: Disposer[] = [];
|
protected syncDisposers: Disposer[] = [];
|
||||||
|
|
||||||
@ -59,10 +59,10 @@ export abstract class BaseStore<T> extends Singleton {
|
|||||||
const getConfigurationFileModel = di.inject(getConfigurationFileModelInjectable);
|
const getConfigurationFileModel = di.inject(getConfigurationFileModelInjectable);
|
||||||
|
|
||||||
this.storeConfig = getConfigurationFileModel({
|
this.storeConfig = getConfigurationFileModel({
|
||||||
...this.params,
|
|
||||||
projectName: "lens",
|
projectName: "lens",
|
||||||
projectVersion: di.inject(appVersionInjectable),
|
projectVersion: di.inject(appVersionInjectable),
|
||||||
cwd: this.cwd(),
|
cwd: this.cwd(),
|
||||||
|
...this.params,
|
||||||
});
|
});
|
||||||
|
|
||||||
const res: any = this.fromStore(this.storeConfig.store);
|
const res: any = this.fromStore(this.storeConfig.store);
|
||||||
|
|||||||
@ -12,7 +12,7 @@ describe("kubernetesClusterCategory", () => {
|
|||||||
let kubernetesClusterCategory: KubernetesClusterCategory;
|
let kubernetesClusterCategory: KubernetesClusterCategory;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
const di = getDiForUnitTesting();
|
const di = getDiForUnitTesting({ doGeneralOverrides: true });
|
||||||
|
|
||||||
kubernetesClusterCategory = di.inject(kubernetesClusterCategoryInjectable);
|
kubernetesClusterCategory = di.inject(kubernetesClusterCategoryInjectable);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -6,8 +6,6 @@
|
|||||||
import { getInjectionToken } from "@ogre-tools/injectable";
|
import { getInjectionToken } from "@ogre-tools/injectable";
|
||||||
import type { IComputedValue } from "mobx";
|
import type { IComputedValue } from "mobx";
|
||||||
|
|
||||||
export const allowedResourcesInjectionToken = getInjectionToken<
|
export const allowedResourcesInjectionToken = getInjectionToken<IComputedValue<Set<string>>>({
|
||||||
IComputedValue<Set<string>>
|
|
||||||
>({
|
|
||||||
id: "allowed-resources",
|
id: "allowed-resources",
|
||||||
});
|
});
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getGlobalOverride } from "../test-utils/get-global-override";
|
||||||
|
import clusterStoreInjectable from "./cluster-store.injectable";
|
||||||
|
import type { Cluster } from "../cluster/cluster";
|
||||||
|
import type { ClusterStore } from "./cluster-store";
|
||||||
|
|
||||||
|
export default getGlobalOverride(
|
||||||
|
clusterStoreInjectable,
|
||||||
|
() =>
|
||||||
|
({
|
||||||
|
provideInitialFromMain: () => {},
|
||||||
|
getById: (id) => (void id, {}) as Cluster,
|
||||||
|
} as ClusterStore),
|
||||||
|
);
|
||||||
@ -4,7 +4,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { action, comparer, computed, makeObservable, observable, reaction, when } from "mobx";
|
import { action, comparer, computed, makeObservable, observable, reaction, when } from "mobx";
|
||||||
import { broadcastMessage } from "../ipc";
|
|
||||||
import type { ClusterContextHandler } from "../../main/context-handler/context-handler";
|
import type { ClusterContextHandler } from "../../main/context-handler/context-handler";
|
||||||
import type { KubeConfig } from "@kubernetes/client-node";
|
import type { KubeConfig } from "@kubernetes/client-node";
|
||||||
import { HttpError } from "@kubernetes/client-node";
|
import { HttpError } from "@kubernetes/client-node";
|
||||||
@ -25,6 +24,7 @@ import type { CanI } from "./authorization-review.injectable";
|
|||||||
import type { ListNamespaces } from "./list-namespaces.injectable";
|
import type { ListNamespaces } from "./list-namespaces.injectable";
|
||||||
import assert from "assert";
|
import assert from "assert";
|
||||||
import type { Logger } from "../logger";
|
import type { Logger } from "../logger";
|
||||||
|
import type { BroadcastMessage } from "../ipc/broadcast-message.injectable";
|
||||||
|
|
||||||
export interface ClusterDependencies {
|
export interface ClusterDependencies {
|
||||||
readonly directoryForKubeConfigs: string;
|
readonly directoryForKubeConfigs: string;
|
||||||
@ -36,6 +36,7 @@ export interface ClusterDependencies {
|
|||||||
createAuthorizationReview: (config: KubeConfig) => CanI;
|
createAuthorizationReview: (config: KubeConfig) => CanI;
|
||||||
createListNamespaces: (config: KubeConfig) => ListNamespaces;
|
createListNamespaces: (config: KubeConfig) => ListNamespaces;
|
||||||
createVersionDetector: (cluster: Cluster) => VersionDetector;
|
createVersionDetector: (cluster: Cluster) => VersionDetector;
|
||||||
|
broadcastMessage: BroadcastMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -353,15 +354,35 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.disconnected || !this.accessible) {
|
if (this.disconnected || !this.accessible) {
|
||||||
await this.reconnect();
|
try {
|
||||||
|
this.broadcastConnectUpdate("Starting connection ...");
|
||||||
|
await this.reconnect();
|
||||||
|
} catch (error) {
|
||||||
|
this.broadcastConnectUpdate(`Failed to start connection: ${error}`, true);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.broadcastConnectUpdate("Refreshing connection status ...");
|
try {
|
||||||
await this.refreshConnectionStatus();
|
this.broadcastConnectUpdate("Refreshing connection status ...");
|
||||||
|
await this.refreshConnectionStatus();
|
||||||
|
} catch (error) {
|
||||||
|
this.broadcastConnectUpdate(`Failed to connection status: ${error}`, true);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.accessible) {
|
if (this.accessible) {
|
||||||
this.broadcastConnectUpdate("Refreshing cluster accessibility ...");
|
try {
|
||||||
await this.refreshAccessibility();
|
this.broadcastConnectUpdate("Refreshing cluster accessibility ...");
|
||||||
|
await this.refreshAccessibility();
|
||||||
|
} catch (error) {
|
||||||
|
this.broadcastConnectUpdate(`Failed to refresh accessibility: ${error}`, true);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// download kubectl in background, so it's not blocking dashboard
|
// download kubectl in background, so it's not blocking dashboard
|
||||||
this.ensureKubectl()
|
this.ensureKubectl()
|
||||||
.catch(error => this.dependencies.logger.warn(`[CLUSTER]: failed to download kubectl for clusterId=${this.id}`, error));
|
.catch(error => this.dependencies.logger.warn(`[CLUSTER]: failed to download kubectl for clusterId=${this.id}`, error));
|
||||||
@ -595,7 +616,7 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
*/
|
*/
|
||||||
pushState(state = this.getState()) {
|
pushState(state = this.getState()) {
|
||||||
this.dependencies.logger.silly(`[CLUSTER]: push-state`, state);
|
this.dependencies.logger.silly(`[CLUSTER]: push-state`, state);
|
||||||
broadcastMessage("cluster:state", this.id, state);
|
this.dependencies.broadcastMessage("cluster:state", this.id, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
// get cluster system meta, e.g. use in "logger"
|
// get cluster system meta, e.g. use in "logger"
|
||||||
@ -618,7 +639,7 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
const update: KubeAuthUpdate = { message, isError };
|
const update: KubeAuthUpdate = { message, isError };
|
||||||
|
|
||||||
this.dependencies.logger.debug(`[CLUSTER]: broadcasting connection update`, { ...update, meta: this.getMeta() });
|
this.dependencies.logger.debug(`[CLUSTER]: broadcasting connection update`, { ...update, meta: this.getMeta() });
|
||||||
broadcastMessage(`cluster:${this.id}:connection-update`, update);
|
this.dependencies.broadcastMessage(`cluster:${this.id}:connection-update`, update);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async getAllowedNamespaces(proxyConfig: KubeConfig) {
|
protected async getAllowedNamespaces(proxyConfig: KubeConfig) {
|
||||||
@ -638,7 +659,7 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
const { response } = error as HttpError & { response: Response };
|
const { response } = error as HttpError & { response: Response };
|
||||||
|
|
||||||
this.dependencies.logger.info("[CLUSTER]: listing namespaces is forbidden, broadcasting", { clusterId: this.id, error: response.body });
|
this.dependencies.logger.info("[CLUSTER]: listing namespaces is forbidden, broadcasting", { clusterId: this.id, error: response.body });
|
||||||
broadcastMessage(clusterListNamespaceForbiddenChannel, this.id);
|
this.dependencies.broadcastMessage(clusterListNamespaceForbiddenChannel, this.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
return namespaceList;
|
return namespaceList;
|
||||||
|
|||||||
20
src/common/cluster/is-allowed-resource.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import type { KubeResource } from "../rbac";
|
||||||
|
import { apiResourceRecord, apiResources } from "../rbac";
|
||||||
|
|
||||||
|
export const isAllowedResource = (allowedResources: string[]) => (kind: string): boolean => {
|
||||||
|
if ((kind as KubeResource) in apiResourceRecord) {
|
||||||
|
return allowedResources.includes(kind);
|
||||||
|
}
|
||||||
|
|
||||||
|
const apiResource = apiResources.find(resource => resource.kind === kind);
|
||||||
|
|
||||||
|
if (apiResource) {
|
||||||
|
return allowedResources.includes(apiResource.apiName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true; // allowed by default for other resources
|
||||||
|
};
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import priorityClassesRouteInjectable from "./priority-classes-route.injectable";
|
||||||
|
import { navigateToRouteInjectionToken } from "../../../../navigate-to-route-injection-token";
|
||||||
|
|
||||||
|
const navigateToPriorityClassesInjectable = getInjectable({
|
||||||
|
id: "navigate-to-priority-classes",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
||||||
|
const route = di.inject(priorityClassesRouteInjectable);
|
||||||
|
|
||||||
|
return () => navigateToRoute(route);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default navigateToPriorityClassesInjectable;
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import isAllowedResourceInjectable from "../../../../../utils/is-allowed-resource.injectable";
|
||||||
|
import { frontEndRouteInjectionToken } from "../../../../front-end-route-injection-token";
|
||||||
|
|
||||||
|
const priorityClassesRouteInjectable = getInjectable({
|
||||||
|
id: "priority-classes-route",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const isAllowedResource = di.inject(isAllowedResourceInjectable, "priorityclasses");
|
||||||
|
|
||||||
|
return {
|
||||||
|
path: "/priorityclasses",
|
||||||
|
clusterFrame: true,
|
||||||
|
isEnabled: isAllowedResource,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
injectionToken: frontEndRouteInjectionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default priorityClassesRouteInjectable;
|
||||||
@ -13,10 +13,13 @@ const navigateToExtensionPreferencesInjectable = getInjectable({
|
|||||||
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
||||||
const route = di.inject(extensionPreferencesRouteInjectable);
|
const route = di.inject(extensionPreferencesRouteInjectable);
|
||||||
|
|
||||||
return (extensionId: string, tabId?: string) => navigateToRoute(route, { parameters: {
|
return (extensionId: string, tabId?: string) => navigateToRoute(route, {
|
||||||
extensionId,
|
parameters: {
|
||||||
tabId,
|
extensionId,
|
||||||
}});
|
tabId,
|
||||||
|
},
|
||||||
|
withoutAffectingBackButton: true,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
10
src/common/fs/stat/stat.global-override-for-injectable.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import statInjectable from "./stat.injectable";
|
||||||
|
import { getGlobalOverride } from "../../test-utils/get-global-override";
|
||||||
|
|
||||||
|
export default getGlobalOverride(statInjectable, () => () => {
|
||||||
|
throw new Error("Tried to call stat without explicit override");
|
||||||
|
});
|
||||||
14
src/common/fs/stat/stat.injectable.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import fsInjectable from "../fs.injectable";
|
||||||
|
|
||||||
|
const statInjectable = getInjectable({
|
||||||
|
id: "stat",
|
||||||
|
|
||||||
|
instantiate: (di) => di.inject(fsInjectable).stat,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default statInjectable;
|
||||||
76
src/common/fs/validate-directory.injectable.ts
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import type { AsyncResult } from "../utils/async-result";
|
||||||
|
import { isErrnoException } from "../utils";
|
||||||
|
import type { Stats } from "fs-extra";
|
||||||
|
import { lowerFirst } from "lodash/fp";
|
||||||
|
import statInjectable from "./stat/stat.injectable";
|
||||||
|
|
||||||
|
export type ValidateDirectory = (path: string) => Promise<AsyncResult<undefined>>;
|
||||||
|
|
||||||
|
function getUserReadableFileType(stats: Stats): string {
|
||||||
|
if (stats.isFile()) {
|
||||||
|
return "a file";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stats.isFIFO()) {
|
||||||
|
return "a pipe";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stats.isSocket()) {
|
||||||
|
return "a socket";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stats.isBlockDevice()) {
|
||||||
|
return "a block device";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stats.isCharacterDevice()) {
|
||||||
|
return "a character device";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "an unknown file type";
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateDirectoryInjectable = getInjectable({
|
||||||
|
id: "validate-directory",
|
||||||
|
|
||||||
|
instantiate: (di): ValidateDirectory => {
|
||||||
|
const stat = di.inject(statInjectable);
|
||||||
|
|
||||||
|
return async (path) => {
|
||||||
|
try {
|
||||||
|
const stats = await stat(path);
|
||||||
|
|
||||||
|
if (stats.isDirectory()) {
|
||||||
|
return { callWasSuccessful: true, response: undefined };
|
||||||
|
}
|
||||||
|
|
||||||
|
return { callWasSuccessful: false, error: `the provided path is ${getUserReadableFileType(stats)} and not a directory.` };
|
||||||
|
} catch (error) {
|
||||||
|
if (!isErrnoException(error)) {
|
||||||
|
return { callWasSuccessful: false, error: "of an unknown error, please try again." };
|
||||||
|
}
|
||||||
|
|
||||||
|
const humanReadableErrors: Record<string, string> = {
|
||||||
|
ENOENT: "the provided path does not exist.",
|
||||||
|
EACCES: "search permissions is denied for one of the directories in the prefix of the provided path.",
|
||||||
|
ELOOP: "the provided path is a sym-link which points to a chain of sym-links that is too long to resolve. Perhaps it is cyclic.",
|
||||||
|
ENAMETOOLONG: "the pathname is too long to be used.",
|
||||||
|
ENOTDIR: "a prefix of the provided path is not a directory.",
|
||||||
|
};
|
||||||
|
|
||||||
|
const humanReadableError = error.code
|
||||||
|
? humanReadableErrors[error.code]
|
||||||
|
: lowerFirst(String(error));
|
||||||
|
|
||||||
|
return { callWasSuccessful: false, error: humanReadableError };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default validateDirectoryInjectable;
|
||||||