mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-17 13:13:49 +01:00
INFRA: Update everything except React (#312)
This commit is contained in:
parent
54e8875dd0
commit
0c2d402f0b
@ -17,7 +17,7 @@ module.exports = {
|
||||
ecmaFeatures: {
|
||||
experimentalObjectRestSpread: true,
|
||||
},
|
||||
project: ["./tsconfig.json", "./test/tsconfig.json", "./tools/tsconfig.json", "./test/cypress/tsconfig.json"],
|
||||
project: ["./tsconfig.json", "./test/tsconfig.json", "./tools/tsconfig.json"],
|
||||
},
|
||||
plugins: ["@typescript-eslint"],
|
||||
extends: ["plugin:@typescript-eslint/recommended"],
|
||||
|
14
cypress.json
14
cypress.json
@ -1,14 +0,0 @@
|
||||
{
|
||||
"baseUrl": "http://localhost:8000",
|
||||
"trashAssetsBeforeRuns": true,
|
||||
"videoUploadOnPasses": false,
|
||||
"viewportWidth": 1980,
|
||||
"viewportHeight": 1080,
|
||||
"fixturesFolder": "test/cypress/fixtures",
|
||||
"integrationFolder": "test/cypress/integration",
|
||||
"pluginsFile": "test/cypress/plugins/index.js",
|
||||
"supportFile": "test/cypress/support/index.js",
|
||||
"screenshotsFolder": ".cypress/screenshots",
|
||||
"videosFolder": ".cypress/videos",
|
||||
"downloadsFolder": ".cypress/downloads"
|
||||
}
|
14
electron/package-lock.json
generated
14
electron/package-lock.json
generated
@ -9,7 +9,7 @@
|
||||
"version": "1.6.4",
|
||||
"dependencies": {
|
||||
"electron-config": "^2.0.0",
|
||||
"electron-log": "^4.4.4",
|
||||
"electron-log": "^4.4.8",
|
||||
"lodash": "^4.17.21"
|
||||
}
|
||||
},
|
||||
@ -49,9 +49,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron-log": {
|
||||
"version": "4.4.4",
|
||||
"resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.4.tgz",
|
||||
"integrity": "sha512-jcNtrVmKXG+CHchLo/jnjjQ9K4/ORguWD23H2nqApTwisQ4Qo3IRQtLiorubajX0Uxg76Xm/Yt+eNfQMoHVr5w=="
|
||||
"version": "4.4.8",
|
||||
"resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz",
|
||||
"integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA=="
|
||||
},
|
||||
"node_modules/env-paths": {
|
||||
"version": "1.0.0",
|
||||
@ -224,9 +224,9 @@
|
||||
}
|
||||
},
|
||||
"electron-log": {
|
||||
"version": "4.4.4",
|
||||
"resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.4.tgz",
|
||||
"integrity": "sha512-jcNtrVmKXG+CHchLo/jnjjQ9K4/ORguWD23H2nqApTwisQ4Qo3IRQtLiorubajX0Uxg76Xm/Yt+eNfQMoHVr5w=="
|
||||
"version": "4.4.8",
|
||||
"resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz",
|
||||
"integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA=="
|
||||
},
|
||||
"env-paths": {
|
||||
"version": "1.0.0",
|
||||
|
@ -25,7 +25,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"electron-config": "^2.0.0",
|
||||
"electron-log": "^4.4.4",
|
||||
"electron-log": "^4.4.8",
|
||||
"lodash": "^4.17.21"
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,8 @@
|
||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
const { ipcRenderer, contextBridge } = require("electron");
|
||||
const log = require("electron-log");
|
||||
|
||||
contextBridge.exposeInMainWorld("electronBridge", {
|
||||
send: (channel, data) => {
|
||||
log.log("Send on channel " + channel);
|
||||
// whitelist channels
|
||||
let validChannels = [
|
||||
"get-save-data-response",
|
||||
@ -19,7 +17,6 @@ contextBridge.exposeInMainWorld("electronBridge", {
|
||||
}
|
||||
},
|
||||
receive: (channel, func) => {
|
||||
log.log("Receive on channel " + channel);
|
||||
let validChannels = [
|
||||
"get-save-data-request",
|
||||
"get-save-info-request",
|
||||
|
13229
package-lock.json
generated
13229
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
92
package.json
92
package.json
@ -11,83 +11,81 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.4.1",
|
||||
"@emotion/styled": "^11.3.0",
|
||||
"@material-ui/core": "^4.12.3",
|
||||
"@emotion/styled": "^11.10.5",
|
||||
"@material-ui/core": "^4.12.4",
|
||||
"@monaco-editor/react": "^4.4.6",
|
||||
"@mui/icons-material": "^5.0.3",
|
||||
"@mui/material": "^5.0.3",
|
||||
"@mui/styles": "^5.0.1",
|
||||
"@mui/icons-material": "^5.11.0",
|
||||
"@mui/material": "~5.10.15",
|
||||
"@mui/styles": "^5.11.2",
|
||||
"@mui/system": "^5.0.3",
|
||||
"@types/estree": "^1.0.0",
|
||||
"acorn": "^8.7.1",
|
||||
"acorn": "^8.8.1",
|
||||
"acorn-walk": "^8.2.0",
|
||||
"arg": "^5.0.0",
|
||||
"arg": "^5.0.2",
|
||||
"bcryptjs": "^2.4.3",
|
||||
"better-react-mathjax": "^2.0.2",
|
||||
"clsx": "^1.1.1",
|
||||
"date-fns": "^2.25.0",
|
||||
"escodegen": "^1.11.0",
|
||||
"file-saver": "^1.3.8",
|
||||
"jquery": "^3.5.0",
|
||||
"clsx": "^1.2.1",
|
||||
"date-fns": "^2.29.3",
|
||||
"escodegen": "^2.0.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"jquery": "^3.6.3",
|
||||
"js-sha256": "^0.9.0",
|
||||
"jszip": "^3.7.0",
|
||||
"jszip": "^3.10.1",
|
||||
"material-ui-color": "^1.2.0",
|
||||
"material-ui-popup-state": "^1.5.3",
|
||||
"monaco-editor": "^0.34.1",
|
||||
"notistack": "^2.0.2",
|
||||
"notistack": "^2.0.8",
|
||||
"numeral": "2.0.6",
|
||||
"prop-types": "^15.8.0",
|
||||
"prop-types": "^15.8.1",
|
||||
"react": "^17.0.2",
|
||||
"react-beautiful-dnd": "^13.1.0",
|
||||
"react-beautiful-dnd": "^13.1.1",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-draggable": "^4.4.4",
|
||||
"react-resizable": "^3.0.4",
|
||||
"sprintf-js": "^1.1.1"
|
||||
"sprintf-js": "^1.1.2"
|
||||
},
|
||||
"description": "A cyberpunk-themed incremental game",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.3.4",
|
||||
"@babel/preset-env": "^7.15.0",
|
||||
"@babel/preset-react": "^7.0.0",
|
||||
"@babel/preset-typescript": "^7.15.0",
|
||||
"@babel/core": "^7.20.12",
|
||||
"@babel/preset-env": "^7.20.2",
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.18.6",
|
||||
"@microsoft/api-documenter": "^7.13.65",
|
||||
"@microsoft/api-extractor": "^7.18.17",
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
|
||||
"@testing-library/cypress": "^8.0.1",
|
||||
"@types/acorn": "^4.0.6",
|
||||
"@types/bcryptjs": "^2.4.2",
|
||||
"@types/escodegen": "^0.0.7",
|
||||
"@types/file-saver": "^2.0.3",
|
||||
"@types/jest": "^27.4.1",
|
||||
"@types/jquery": "^3.5.14",
|
||||
"@types/lodash": "^4.14.168",
|
||||
"@types/file-saver": "^2.0.5",
|
||||
"@types/jest": "^29.2.5",
|
||||
"@types/jquery": "^3.5.16",
|
||||
"@types/lodash": "^4.14.191",
|
||||
"@types/numeral": "^2.0.2",
|
||||
"@types/react": "^17.0.21",
|
||||
"@types/react-beautiful-dnd": "^13.1.2",
|
||||
"@types/react-dom": "^17.0.9",
|
||||
"@types/react-resizable": "^1.7.3",
|
||||
"@typescript-eslint/eslint-plugin": "^5.20.0",
|
||||
"@typescript-eslint/parser": "^5.20.0",
|
||||
"babel-jest": "^27.0.6",
|
||||
"babel-loader": "^9.1.0",
|
||||
"cypress": "^8.3.1",
|
||||
"@types/react": "^17.0.52",
|
||||
"@types/react-beautiful-dnd": "^13.1.3",
|
||||
"@types/react-dom": "^17.0.18",
|
||||
"@types/react-resizable": "^3.0.3",
|
||||
"@typescript-eslint/eslint-plugin": "^5.48.0",
|
||||
"@typescript-eslint/parser": "^5.48.0",
|
||||
"babel-jest": "^29.3.1",
|
||||
"babel-loader": "^9.1.2",
|
||||
"electron": "^22.0.0",
|
||||
"electron-packager": "^17.1.1",
|
||||
"eslint": "^8.13.0",
|
||||
"eslint": "^8.31.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"fork-ts-checker-webpack-plugin": "^6.3.3",
|
||||
"fork-ts-checker-webpack-plugin": "^7.2.14",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"http-server": "^13.0.1",
|
||||
"jest": "^27.1.0",
|
||||
"jsdom": "^16.5.0",
|
||||
"http-server": "^14.1.1",
|
||||
"jest": "^29.3.1",
|
||||
"jest-environment-jsdom": "^29.3.1",
|
||||
"jsdom": "^20.0.3",
|
||||
"lodash": "^4.17.21",
|
||||
"mini-css-extract-plugin": "^2.7.2",
|
||||
"prettier": "^2.3.2",
|
||||
"prettier": "^2.8.1",
|
||||
"raw-loader": "^4.0.2",
|
||||
"react-refresh": "^0.14.0",
|
||||
"source-map": "^0.7.3",
|
||||
"start-server-and-test": "^1.14.0",
|
||||
"typescript": "^4.2.4",
|
||||
"source-map": "^0.7.4",
|
||||
"start-server-and-test": "^1.15.2",
|
||||
"typescript": "^4.9.4",
|
||||
"webpack": "^5.75.0",
|
||||
"webpack-cli": "^5.0.1",
|
||||
"webpack-dev-server": "^4.11.1"
|
||||
@ -101,10 +99,6 @@
|
||||
"url": "git+https://github.com/danielyxie/bitburner.git"
|
||||
},
|
||||
"scripts": {
|
||||
"cy:test": "start-server-and-test start http://localhost:8000 cy:run",
|
||||
"cy:dev": "start-server-and-test start:dev http://localhost:8000 cy:open",
|
||||
"cy:open": "cypress open",
|
||||
"cy:run": "cypress run",
|
||||
"doc": "npx api-extractor run && npx api-documenter markdown && rm input/bitburner.api.json && rm -r input",
|
||||
"format": "prettier --write .",
|
||||
"format:report": "prettier -c .",
|
||||
|
@ -88,11 +88,13 @@ const Exclusive = (props: IExclusiveProps): React.ReactElement => {
|
||||
Certain <b>gangs</b>
|
||||
</li>
|
||||
)}
|
||||
{Player.canAccessGrafting() && !props.aug.isSpecial && props.aug.name !== AugmentationNames.TheRedPill && (
|
||||
<li>
|
||||
<b>Grafting</b>
|
||||
</li>
|
||||
)}
|
||||
{Player.canAccessGrafting() &&
|
||||
!props.aug.isSpecial &&
|
||||
props.aug.name !== AugmentationNames.TheRedPill && (
|
||||
<li>
|
||||
<b>Grafting</b>
|
||||
</li>
|
||||
)}
|
||||
</Typography>
|
||||
</ul>
|
||||
</>
|
||||
|
@ -39,8 +39,8 @@ type State = {
|
||||
export class Blackjack extends React.Component<Record<string, never>, State> {
|
||||
deck: Deck;
|
||||
|
||||
constructor() {
|
||||
super({});
|
||||
constructor(props: Record<string, never>) {
|
||||
super(props);
|
||||
|
||||
this.deck = new Deck(DECK_COUNT);
|
||||
|
||||
|
@ -126,8 +126,9 @@ export function Cyberpunk2077Game(props: IMinigameProps): React.ReactElement {
|
||||
gap: 1,
|
||||
}}
|
||||
>
|
||||
{flatGrid.map((item) => (
|
||||
{flatGrid.map((item, idx) => (
|
||||
<Typography
|
||||
key={idx}
|
||||
sx={{
|
||||
fontSize: fontSize,
|
||||
color: item.color,
|
||||
|
@ -41,49 +41,47 @@ export function GenericLocation({ loc }: IProps): React.ReactElement {
|
||||
* Determine what needs to be rendered for this location based on the locations
|
||||
* type. Returns an array of React components that should be rendered
|
||||
*/
|
||||
function getLocationSpecificContent(): React.ReactNode[] {
|
||||
const content: React.ReactNode[] = [];
|
||||
|
||||
function getLocationSpecificContent(): React.ReactNode {
|
||||
if (loc.types.includes(LocationType.Company)) {
|
||||
content.push(<CompanyLocation locName={loc.name} />);
|
||||
return <CompanyLocation locName={loc.name} />;
|
||||
}
|
||||
|
||||
if (loc.types.includes(LocationType.Gym)) {
|
||||
content.push(<GymLocation loc={loc} />);
|
||||
return <GymLocation loc={loc} />;
|
||||
}
|
||||
|
||||
if (loc.types.includes(LocationType.Hospital)) {
|
||||
content.push(<HospitalLocation />);
|
||||
return <HospitalLocation />;
|
||||
}
|
||||
|
||||
if (loc.types.includes(LocationType.Slums)) {
|
||||
content.push(<SlumsLocation />);
|
||||
return <SlumsLocation />;
|
||||
}
|
||||
|
||||
if (loc.types.includes(LocationType.Special)) {
|
||||
content.push(<SpecialLocation loc={loc} />);
|
||||
return <SpecialLocation loc={loc} />;
|
||||
}
|
||||
|
||||
if (loc.types.includes(LocationType.TechVendor)) {
|
||||
content.push(<TechVendorLocation loc={loc} />);
|
||||
return <TechVendorLocation loc={loc} />;
|
||||
}
|
||||
|
||||
if (loc.types.includes(LocationType.TravelAgency)) {
|
||||
content.push(<TravelAgencyRoot />);
|
||||
return <TravelAgencyRoot />;
|
||||
}
|
||||
|
||||
if (loc.types.includes(LocationType.University)) {
|
||||
content.push(<UniversityLocation loc={loc} />);
|
||||
return <UniversityLocation loc={loc} />;
|
||||
}
|
||||
|
||||
if (loc.types.includes(LocationType.Casino)) {
|
||||
content.push(<CasinoLocation />);
|
||||
return <CasinoLocation />;
|
||||
}
|
||||
|
||||
return content;
|
||||
return null;
|
||||
}
|
||||
|
||||
const locContent: React.ReactNode[] = getLocationSpecificContent();
|
||||
const locContent: React.ReactNode = getLocationSpecificContent();
|
||||
const serverMeta = serverMetadata.find((s) => s.specialName === loc.name);
|
||||
const server = GetServer(serverMeta ? serverMeta.hostname : "");
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { ScriptArg } from "./ScriptArg";
|
||||
|
||||
export type ScriptIdentifier = //This was previously in INetscriptHelper.ts, may move to its own file or a generic types file.
|
||||
//This was previously in INetscriptHelper.ts, may move to its own file or a generic types file.
|
||||
export type ScriptIdentifier =
|
||||
| number
|
||||
| {
|
||||
scriptname: string;
|
||||
|
@ -1,72 +0,0 @@
|
||||
export {};
|
||||
|
||||
describe("netscript", () => {
|
||||
it("Do naviguation", () => {
|
||||
cy.findByRole("button", { name: "SKIP TUTORIAL" }).click();
|
||||
|
||||
cy.findByText("Dev").click();
|
||||
cy.findByText(/Source-Files/i).click();
|
||||
cy.findByLabelText(/all-sf-3/i).click();
|
||||
cy.findByText(/Experience/i).click();
|
||||
cy.findByText(/Tons of exp/i).click();
|
||||
cy.findByText(/General/i).click();
|
||||
cy.findByText(/Hack w0/i).click();
|
||||
cy.findByText(/SEMPOOL INVALID/i);
|
||||
cy.findByText(/Many decades/i, { timeout: 15000 });
|
||||
cy.findByLabelText("enter-bitnode-1").click();
|
||||
cy.findByText(/Enter BN1.2/i).click();
|
||||
|
||||
cy.get("body").type("{esc}");
|
||||
|
||||
cy.findByText("Dev").click();
|
||||
cy.findByText(/Experience/i).click();
|
||||
cy.findByText(/Tons of exp/i).click();
|
||||
|
||||
cy.findByText("Script Editor").click();
|
||||
cy.findByText(/No Open Files/i);
|
||||
|
||||
cy.findByText("Active Scripts").click();
|
||||
cy.findByText(/Total production since last Augment/i);
|
||||
|
||||
cy.findByText("Create Program").click();
|
||||
cy.findByText(/This page displays/i);
|
||||
|
||||
cy.findByText("Stats").click();
|
||||
cy.findByText(/Current City:/i);
|
||||
|
||||
cy.findByText("Factions").click();
|
||||
cy.findByText(/Lists all/i);
|
||||
|
||||
cy.findByText("Augmentations").click();
|
||||
cy.findByText(/Purchased Augmentations/i);
|
||||
|
||||
cy.findByText("Hacknet").click();
|
||||
cy.findByText(/The Hacknet is a global/i);
|
||||
|
||||
cy.findByText("Sleeves").click();
|
||||
cy.findByText(/Duplicate Sleeves are MK/i);
|
||||
|
||||
cy.findByText("City").click();
|
||||
cy.findByText(/Sector-12/i);
|
||||
cy.findByLabelText("The Slums").click();
|
||||
cy.findByText("City").click();
|
||||
cy.findByLabelText("Powerhouse Gym").click();
|
||||
cy.findByText("City").click();
|
||||
cy.findByLabelText("MegaCorp").click();
|
||||
|
||||
cy.findByText("Travel").click();
|
||||
cy.findByText(/Travel Agency/i);
|
||||
|
||||
cy.findByText("Stock Market").click();
|
||||
cy.findByText(/ECorp/i);
|
||||
|
||||
cy.findByText("Milestones").click();
|
||||
cy.findByText(/don't reward you for/i);
|
||||
|
||||
cy.findByText("Tutorial").click();
|
||||
cy.findByText(/Tutorial \/ Documentation/i);
|
||||
|
||||
cy.findByText("Options").click();
|
||||
cy.findByText(/\.script exec time/i);
|
||||
});
|
||||
});
|
@ -1,51 +0,0 @@
|
||||
export {};
|
||||
|
||||
describe("netscript", () => {
|
||||
it("creates and runs a NetScript 2.0 script", () => {
|
||||
cy.findByRole("button", { name: "SKIP TUTORIAL" }).click();
|
||||
|
||||
cy.findByRole("textbox").type("connect n00dles{enter}");
|
||||
cy.findByText(/connected to n00dles/i);
|
||||
|
||||
cy.findByRole("textbox").type("run NUKE.exe{enter}");
|
||||
cy.findByText(/gained root access/i);
|
||||
|
||||
cy.findByRole("textbox").type("home{enter}");
|
||||
cy.findByText(/connected to home/i);
|
||||
|
||||
cy.findByRole("textbox").type("nano script.js{enter}");
|
||||
|
||||
// monaco can take a bit
|
||||
cy.findByRole("code", { timeout: 15_000 }).type("{ctrl}a{del}").type(`export const main = async (ns) => {{}
|
||||
while(true) {{}
|
||||
await ns.hack("n00dles");`);
|
||||
|
||||
cy.findByText("RAM: 1.70GB");
|
||||
cy.findByRole("button", { name: /Save \(Ctrl\/Cmd \+ s\)/i }).click();
|
||||
cy.findByRole("button", { name: /Close \(Ctrl\/Cmd \+ b\)/i }).click();
|
||||
|
||||
cy.findByRole("textbox").type("run script.js{enter}");
|
||||
cy.findByText(/Running script with 1 thread/);
|
||||
|
||||
cy.findByRole("textbox").type("ps{enter}");
|
||||
cy.findByText(/\(PID - 1\) script.js/);
|
||||
});
|
||||
|
||||
it("errors and shows a dialog box when static RAM !== dynamic RAM", () => {
|
||||
cy.findByRole("button", { name: "SKIP TUTORIAL" }).click();
|
||||
|
||||
cy.findByRole("textbox").type("nano script.js{enter}");
|
||||
|
||||
// monaco can take a bit
|
||||
cy.findByRole("code", { timeout: 15_000 }).type("{ctrl}a{del}").type(`export const main = async (ns) => {{}
|
||||
const command = "hack";
|
||||
ns[command]("n00dles");`);
|
||||
|
||||
cy.findByText("RAM: 1.60GB");
|
||||
cy.findByRole("button", { name: /Save \(Ctrl\/Cmd \+ s\)/i }).click();
|
||||
cy.findByRole("button", { name: /Close \(Ctrl\/Cmd \+ b\)/i }).click();
|
||||
|
||||
cy.findByRole("textbox").type("run script.js{enter}");
|
||||
cy.findByText(/Dynamic RAM usage calculated to be greater than initial RAM usage on fn: hack./i);
|
||||
});
|
||||
});
|
@ -1,95 +0,0 @@
|
||||
export {};
|
||||
|
||||
describe("tutorial", () => {
|
||||
it("completes the tutorial", () => {
|
||||
cy.findByText(/dark, dystopian future/);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByText(/heading to the Stats page/);
|
||||
cy.findByRole("button", { name: "Stats" }).click();
|
||||
|
||||
cy.findByText(/lot of important information/);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByText(/head to your computer's terminal/);
|
||||
cy.findByRole("button", { name: "Terminal" }).click();
|
||||
|
||||
cy.findByText(/is used to interface/);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByText(/Let's try it out/i);
|
||||
cy.findByRole("textbox").type("help{enter}");
|
||||
|
||||
cy.findByText(/displays a list of all available/i);
|
||||
cy.findByRole("textbox").type("ls{enter}");
|
||||
|
||||
cy.findByText(/is a basic command that shows files/i);
|
||||
cy.findByRole("textbox").type("scan{enter}");
|
||||
|
||||
cy.findByText(/that's great and all/i);
|
||||
cy.findByRole("textbox").type("scan-analyze{enter}");
|
||||
|
||||
cy.findByText(/shows more detailed information/i);
|
||||
cy.findByRole("textbox").type("scan-analyze 2{enter}");
|
||||
|
||||
cy.findByText(/now you can see information/i);
|
||||
cy.findByRole("textbox").type("connect n00dles{enter}");
|
||||
|
||||
cy.findByText(/currency has become digital/i);
|
||||
cy.findByRole("textbox").type("analyze{enter}");
|
||||
|
||||
cy.findByText(/For this server, the required hacking skill/i);
|
||||
cy.findByText(/Required number of open ports for NUKE/i);
|
||||
cy.findByRole("textbox").type("run NUKE.exe{enter}");
|
||||
|
||||
cy.findByText(/gained root access to n00dles/i);
|
||||
cy.findByRole("textbox").type("hack{enter}");
|
||||
|
||||
cy.findByText(/now attempting to hack the server/i);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByRole("textbox", { timeout: 15_000 }).should("not.be.disabled").type("home{enter}");
|
||||
|
||||
cy.findByRole("textbox").type("nano n00dles.script{enter}");
|
||||
|
||||
// monaco can take a bit
|
||||
cy.findByRole("code", { timeout: 15_000 }).type("{selectall}{del}").type("while(true) {{}{enter}hack('n00dles');");
|
||||
|
||||
cy.findByRole("button", { name: /Save \(Ctrl\/Cmd \+ s\)/i }).click();
|
||||
|
||||
cy.findByText(/now we'll run the script/i);
|
||||
cy.findByRole("textbox").type("free{enter}");
|
||||
|
||||
cy.findByText(/We have 8GB of free RAM on this machine/i);
|
||||
cy.findByRole("textbox").type("run n00dles.script{enter}");
|
||||
|
||||
cy.findByText(/Your script is now running/i);
|
||||
cy.findByRole("button", { name: "Active Scripts" }).click();
|
||||
|
||||
cy.findByText(/This page displays information about all of your scripts/i);
|
||||
cy.findByRole("button", { name: "Terminal" }).click();
|
||||
|
||||
cy.findByText(/each active script contains logs/i);
|
||||
cy.findByRole("textbox").type("tail n00dles.script{enter}");
|
||||
|
||||
cy.findByText(/The log for this script won't show much/i);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByText(/Hacking is not the only way to earn money/i);
|
||||
cy.findByRole("button", { name: "Hacknet" }).click();
|
||||
|
||||
cy.findByText(/Here you can purchase new Hacknet Nodes/i);
|
||||
cy.findByRole("button", { name: /Purchase Hacknet Node/ }).click();
|
||||
|
||||
cy.findByText(/You just purchased a Hacknet Node!/i);
|
||||
cy.findByRole("button", { name: "City" }).click();
|
||||
|
||||
cy.findByText(/This page lists all of the different locations/i);
|
||||
cy.findByRole("button", { name: "Tutorial" }).click();
|
||||
|
||||
cy.findByText(/a lot of different documentation about the game/i);
|
||||
cy.findByRole("button", { name: "FINISH TUTORIAL" }).click();
|
||||
|
||||
cy.findByText(/Tutorial \/ Documentation/i);
|
||||
});
|
||||
});
|
@ -1,21 +0,0 @@
|
||||
/// <reference types="cypress" />
|
||||
// ***********************************************************
|
||||
// This example plugins/index.js can be used to load plugins
|
||||
//
|
||||
// You can change the location of this file or turn off loading
|
||||
// the plugins file with the 'pluginsFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/plugins-guide
|
||||
// ***********************************************************
|
||||
|
||||
// This function is called when a project is opened or re-opened (e.g. due to
|
||||
// the project's config changing)
|
||||
|
||||
/**
|
||||
* @type {Cypress.PluginConfig}
|
||||
*/
|
||||
module.exports = (/*on, config*/) => {
|
||||
// `on` is used to hook into various events Cypress emits
|
||||
// `config` is the resolved Cypress config
|
||||
};
|
@ -1 +0,0 @@
|
||||
import "@testing-library/cypress/add-commands";
|
@ -1,10 +0,0 @@
|
||||
export {};
|
||||
|
||||
beforeEach(() => {
|
||||
cy.visit("/", {
|
||||
onBeforeLoad(win: Cypress.AUTWindow) {
|
||||
win.indexedDB.deleteDatabase("bitburnerSave");
|
||||
},
|
||||
});
|
||||
cy.clearLocalStorage();
|
||||
});
|
@ -1,21 +0,0 @@
|
||||
// ***********************************************************
|
||||
// This example support/index.js is processed and
|
||||
// loaded automatically before your test files.
|
||||
//
|
||||
// This is a great place to put global configuration and
|
||||
// behavior that modifies Cypress.
|
||||
//
|
||||
// You can change the location of this file or turn off
|
||||
// automatically serving support files with the
|
||||
// 'supportFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/configuration
|
||||
// ***********************************************************
|
||||
|
||||
// Import commands.js using ES2015 syntax:
|
||||
import "./globalHooks";
|
||||
import "./commands";
|
||||
|
||||
// Alternatively you can use CommonJS syntax:
|
||||
// require('./commands')
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"checkJs": true,
|
||||
"types": ["cypress", "@testing-library/cypress"]
|
||||
},
|
||||
"include": ["**/*"],
|
||||
"exclude": []
|
||||
}
|
@ -4,6 +4,5 @@
|
||||
"allowJs": true,
|
||||
"types": ["jest"]
|
||||
},
|
||||
"include": ["**/*", "../src/**/*.d.ts"],
|
||||
"exclude": ["cypress/**/*"]
|
||||
"include": ["**/*", "../src/**/*.d.ts"]
|
||||
}
|
||||
|
@ -10,6 +10,8 @@ mkdir -p .package/dist/ || true
|
||||
cp index.html .package
|
||||
cp favicon.ico .package
|
||||
cp -r electron/* .package
|
||||
# steam_appid.txt would end up in the resource dir
|
||||
rm .package/steam_appid.txt
|
||||
cp -r dist .package
|
||||
|
||||
# Install electron sub-dependencies
|
||||
@ -20,3 +22,5 @@ cd ..
|
||||
BUILD_PLATFORM="${1:-"all"}"
|
||||
# And finally build the app.
|
||||
npm run electron:packager-$BUILD_PLATFORM
|
||||
|
||||
echo .build/* | xargs -n 1 cp electron/steam_appid.txt
|
||||
|
@ -16,5 +16,5 @@
|
||||
"strict": true,
|
||||
"target": "es2019"
|
||||
},
|
||||
"include": ["src/**/*"]
|
||||
"include": ["src/**/*", "electron/**/*", ".eslintrc.js"]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user