feat: add new variables to globals or create new environment
This commit is contained in:
@@ -38,12 +38,18 @@
|
|||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent } from "@nuxtjs/composition-api"
|
import { defineComponent } from "@nuxtjs/composition-api"
|
||||||
import { createEnvironment } from "~/newstore/environments"
|
import { useReadonlyStream } from "~/helpers/utils/composables"
|
||||||
|
import { createEnvironment, environments$ } from "~/newstore/environments"
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
props: {
|
props: {
|
||||||
show: Boolean,
|
show: Boolean,
|
||||||
},
|
},
|
||||||
|
setup() {
|
||||||
|
return {
|
||||||
|
envList: useReadonlyStream(environments$, []),
|
||||||
|
}
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
name: null as string | null,
|
name: null as string | null,
|
||||||
@@ -56,6 +62,11 @@ export default defineComponent({
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
createEnvironment(this.name)
|
createEnvironment(this.name)
|
||||||
|
// TODO: find better way to get index of new environment
|
||||||
|
this.$emit("environment-added", {
|
||||||
|
name: this.name,
|
||||||
|
index: this.envList.length - 1,
|
||||||
|
})
|
||||||
this.hideModal()
|
this.hideModal()
|
||||||
},
|
},
|
||||||
hideModal() {
|
hideModal() {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
</summary>
|
</summary>
|
||||||
<div class="divide-y divide-dividerLight">
|
<div class="divide-y divide-dividerLight">
|
||||||
<div
|
<div
|
||||||
v-if="noEnvSelected"
|
v-if="noEnvSelected && !globalHasAdditions"
|
||||||
class="flex bg-error p-4 text-secondaryDark"
|
class="flex bg-error p-4 text-secondaryDark"
|
||||||
>
|
>
|
||||||
<i class="mr-4 material-icons"> warning </i>
|
<i class="mr-4 material-icons"> warning </i>
|
||||||
@@ -48,11 +48,13 @@
|
|||||||
:label="t('environment.add_to_global')"
|
:label="t('environment.add_to_global')"
|
||||||
class="text-tiny !bg-primary"
|
class="text-tiny !bg-primary"
|
||||||
filled
|
filled
|
||||||
|
@click.native="addEnvToGlobal()"
|
||||||
/>
|
/>
|
||||||
<ButtonSecondary
|
<ButtonSecondary
|
||||||
:label="t('environment.create_new')"
|
:label="t('environment.create_new')"
|
||||||
class="text-tiny !bg-primary"
|
class="text-tiny !bg-primary"
|
||||||
filled
|
filled
|
||||||
|
@click.native="displayModalAdd(true)"
|
||||||
/>
|
/>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -165,25 +167,44 @@
|
|||||||
class="my-4"
|
class="my-4"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<EnvironmentsAdd
|
||||||
|
:show="showModalAdd"
|
||||||
|
@hide-modal="displayModalAdd(false)"
|
||||||
|
@environment-added="createNewEnv($event)"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed } from "@nuxtjs/composition-api"
|
import { computed, Ref, ref } from "@nuxtjs/composition-api"
|
||||||
|
import isEqual from "lodash/isEqual"
|
||||||
import {
|
import {
|
||||||
useReadonlyStream,
|
useReadonlyStream,
|
||||||
useI18n,
|
useI18n,
|
||||||
useStream,
|
useStream,
|
||||||
} from "~/helpers/utils/composables"
|
} from "~/helpers/utils/composables"
|
||||||
import {
|
import {
|
||||||
|
globalEnv$,
|
||||||
selectedEnvIndex$,
|
selectedEnvIndex$,
|
||||||
setCurrentEnvironment,
|
setCurrentEnvironment,
|
||||||
|
setGlobalEnvVariables,
|
||||||
|
updateEnvironment,
|
||||||
} from "~/newstore/environments"
|
} from "~/newstore/environments"
|
||||||
import { restTestResults$, setRESTTestResults } from "~/newstore/RESTSession"
|
import { restTestResults$, setRESTTestResults } from "~/newstore/RESTSession"
|
||||||
|
import { HoppTestResult } from "~/helpers/types/HoppTestResult"
|
||||||
|
|
||||||
const t = useI18n()
|
const t = useI18n()
|
||||||
|
|
||||||
const testResults = useReadonlyStream(restTestResults$, null)
|
const showModalAdd = ref(false)
|
||||||
|
|
||||||
|
const displayModalAdd = (shouldDisplay: boolean) => {
|
||||||
|
showModalAdd.value = shouldDisplay
|
||||||
|
}
|
||||||
|
|
||||||
|
const testResults = useReadonlyStream(
|
||||||
|
restTestResults$,
|
||||||
|
null
|
||||||
|
) as Ref<HoppTestResult | null>
|
||||||
|
|
||||||
const clearContent = () => setRESTTestResults(null)
|
const clearContent = () => setRESTTestResults(null)
|
||||||
|
|
||||||
@@ -205,5 +226,38 @@ const selectedEnvironmentIndex = useStream(
|
|||||||
setCurrentEnvironment
|
setCurrentEnvironment
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const globalEnvVars = useReadonlyStream(globalEnv$, []) as Ref<
|
||||||
|
Array<{
|
||||||
|
key: string
|
||||||
|
value: string
|
||||||
|
}>
|
||||||
|
>
|
||||||
|
|
||||||
const noEnvSelected = computed(() => selectedEnvironmentIndex.value === -1)
|
const noEnvSelected = computed(() => selectedEnvironmentIndex.value === -1)
|
||||||
|
|
||||||
|
const globalHasAdditions = computed(() => {
|
||||||
|
if (!testResults.value?.envDiff.selected.additions) return false
|
||||||
|
return (
|
||||||
|
testResults.value.envDiff.selected.additions.every(
|
||||||
|
(x) => globalEnvVars.value.findIndex((y) => isEqual(x, y)) !== -1
|
||||||
|
) ?? false
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
const addEnvToGlobal = () => {
|
||||||
|
if (!testResults.value?.envDiff.selected.additions) return
|
||||||
|
setGlobalEnvVariables([
|
||||||
|
...globalEnvVars.value,
|
||||||
|
...testResults.value.envDiff.selected.additions,
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
const createNewEnv = ({ name, index }: { name: string; index: number }) => {
|
||||||
|
if (!testResults.value?.envDiff.selected.additions) return
|
||||||
|
updateEnvironment(index, {
|
||||||
|
name,
|
||||||
|
variables: testResults.value.envDiff.selected.additions,
|
||||||
|
})
|
||||||
|
setCurrentEnvironment(index)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
export default [
|
export default [
|
||||||
|
{
|
||||||
|
name: "Environment: Set an environment variable",
|
||||||
|
script: `\n\n// Set an environment variable
|
||||||
|
pw.env.set("variable", "value");`,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "Response: Status code is 200",
|
name: "Response: Status code is 200",
|
||||||
script: `\n\n// Check status code is 200
|
script: `\n\n// Check status code is 200
|
||||||
|
|||||||
Reference in New Issue
Block a user