135 lines
6.4 KiB
Plaintext
135 lines
6.4 KiB
Plaintext
|
||
Password breach warning error mitigation:
|
||
|
||
To suppress Chrome's "password exposed in breach" warning during Cypress tests with intentional weak test passwords, **disable Chrome's password leak detection features via browser launch flags**. This is the cleanest, most reliable solution for test environments.
|
||
|
||
### ✅ Recommended Fix (Cypress Config)
|
||
Add this to your Cypress configuration to disable the relevant Chrome features:
|
||
|
||
#### For Cypress v10+ (`cypress.config.js`):
|
||
```javascript
|
||
const { defineConfig } = require('cypress');
|
||
|
||
module.exports = defineConfig({
|
||
e2e: {
|
||
setupNodeEvents(on, config) {
|
||
on('before:browser:launch', (browser, launchOptions) => {
|
||
if (browser.name === 'chrome') {
|
||
// Disable password breach warnings + related features
|
||
launchOptions.args.push(
|
||
'--disable-features=PasswordLeakDetection,PasswordManagerLeakDetection,PasswordCheck,InsecureCredentialsWarning'
|
||
);
|
||
// Optional: Disable password manager entirely if warnings persist
|
||
// launchOptions.args.push('--disable-blink-features=PasswordManager');
|
||
}
|
||
return launchOptions;
|
||
});
|
||
},
|
||
},
|
||
});
|
||
```
|
||
|
||
#### For Cypress ≤ v9 (`cypress/plugins/index.js`):
|
||
```javascript
|
||
module.exports = (on, config) => {
|
||
on('before:browser:launch', (browser, launchOptions) => {
|
||
if (browser.name === 'chrome') {
|
||
launchOptions.args.push(
|
||
'--disable-features=PasswordLeakDetection,PasswordManagerLeakDetection,PasswordCheck,InsecureCredentialsWarning'
|
||
);
|
||
}
|
||
return launchOptions;
|
||
});
|
||
};
|
||
```
|
||
|
||
### 🔑 Why this works:
|
||
- `PasswordLeakDetection` / `PasswordManagerLeakDetection`: Blocks breach-checking logic
|
||
- `PasswordCheck`: Disables Chrome's "Password Checkup" feature
|
||
- `InsecureCredentialsWarning`: Suppresses "insecure password" UI warnings (critical for obvious passwords like "Accounting")
|
||
- Flags are **non-intrusive**—they don’t alter your app’s behavior or test logic
|
||
- Works in both headed and headless Chrome modes
|
||
- Zero maintenance vs. fragile DOM-interaction workarounds
|
||
|
||
### ⚠️ Important Notes:
|
||
1. **Test passwords remain intentionally weak**—this solution *only* silences Chrome's UI warning.
|
||
🔒 *Never use these passwords outside isolated test environments.*
|
||
2. If warnings persist:
|
||
- Update Chrome flags based on your Chrome version (check `chrome://version` → "Command Line")
|
||
- Temporarily add `--disable-blink-features=PasswordManager` (disables entire password manager; use only if tests don’t rely on autofill)
|
||
3. **Do NOT**:
|
||
- Try clicking away the warning in tests (flaky, slows tests, fragile selector)
|
||
- Disable Safe Browsing globally (`--safebrowsing-disable-auto-update`)—overly broad security risk
|
||
- Modify system Chrome settings (Cypress uses isolated profiles)
|
||
|
||
### 💡 Pro Tip:
|
||
For future-proofing, consider generating **unique strong passwords per test run** (e.g., `Accounting_${Date.now()}`) and resetting them between tests. This avoids breach warnings *and* aligns with security best practices—but the flag solution above is perfect for your current constraint of fixed sample passwords. 😊
|
||
|
||
|
||
|
||
|
||
|
||
|
||
=-=-=-=-=-=-=-=-=-=-=-=-
|
||
From the olden times years ago:
|
||
|
||
|
||
todo: test all current smoke, upload and test on devops
|
||
|
||
todo: missing smoke tests:
|
||
path: "/viewreport",
|
||
|
||
|
||
npm install --save-dev cypress@9.2.1
|
||
|
||
todo: meter reading table click on item to confirm item page no other way to easily get id of unit metered unless create it or something
|
||
|
||
TODO: high priority grid sort and filter test that excercises *all* options and filter types
|
||
this one will be hugely important as part of regression test as it was a constant source of issues in v7
|
||
todo: drawing signature test might work with this code:
|
||
|
||
cy.get('.main-canvas').trigger('mousedown', 500, 100, { force: true }).trigger('mousemove', 500, 200, { force: true }).trigger('mouseup', { force: true });
|
||
|
||
Service user features work
|
||
sb self contained and use standard test data because will also want to run without accounting prior
|
||
Inventory User features work
|
||
OPS featurs work
|
||
Data filters work
|
||
form customize works
|
||
Report printing works
|
||
going to be interesting to validate a pdf document, download I guess or look on screen for something??
|
||
also it's a popup so...?
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTAwIDI0OS42IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjI0OS42Ij48Y2lyY2xlIHI9IjEuNSIgY3g9IjAuMzk5OTkzODk2NDg0Mzc1IiBjeT0iMCIgZmlsbD0icmdiKDAsIDAsIDApIj48L2NpcmNsZT48Y2lyY2xlIHI9IjEuNSIgY3g9IjQ5OC4zOTk5OTM4OTY0ODQ0IiBjeT0iMCIgZmlsbD0icmdiKDAsIDAsIDApIj48L2NpcmNsZT48Y2lyY2xlIHI9IjEuNSIgY3g9IjI0OS4zOTk5OTM4OTY0ODQzOCIgY3k9IjEyNSIgZmlsbD0icmdiKDAsIDAsIDApIj48L2NpcmNsZT48Y2lyY2xlIHI9IjEuNSIgY3g9IjAuMzk5OTkzODk2NDg0Mzc1IiBjeT0iMjQ5IiBmaWxsPSJyZ2IoMCwgMCwgMCkiPjwvY2lyY2xlPjxjaXJjbGUgcj0iMS41IiBjeD0iNDk4LjM5OTk5Mzg5NjQ4NDQiIGN5PSIyNDkiIGZpbGw9InJnYigwLCAwLCAwKSI+PC9jaXJjbGU+PC9zdmc+"
|
||
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNTAwIDI0OS42IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjI0OS42Ij48Y2lyY2xlIHI9IjEuNSIgY3g9IjAuMzk5OTkzODk2NDg0Mzc1IiBjeT0iMCIgZmlsbD0icmdiKDAsIDAsIDApIj48L2NpcmNsZT48Y2lyY2xlIHI9IjEuNSIgY3g9IjQ5OC4zOTk5OTM4OTY0ODQ0IiBjeT0iMCIgZmlsbD0icmdiKDAsIDAsIDApIj48L2NpcmNsZT48Y2lyY2xlIHI9IjEuNSIgY3g9IjI0OS4zOTk5OTM4OTY0ODQzOCIgY3k9IjEyNSIgZmlsbD0icmdiKDAsIDAsIDApIj48L2NpcmNsZT48Y2lyY2xlIHI9IjEuNSIgY3g9IjAuMzk5OTkzODk2NDg0Mzc1IiBjeT0iMjQ5IiBmaWxsPSJyZ2IoMCwgMCwgMCkiPjwvY2lyY2xlPjxjaXJjbGUgcj0iMS41IiBjeD0iNDk4LjM5OTk5Mzg5NjQ4NDQiIGN5PSIyNDkiIGZpbGw9InJnYigwLCAwLCAwKSI+PC9jaXJjbGU+PC9zdmc+"
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
=====================================================================================================================================
|
||
Smoke test = quick test to ensure the most critical functionality is not broken
|
||
this is not so useful for us as the act of development involves many smoke tests on it's own
|
||
also we don't release often enough to need this kind of test
|
||
|
||
Regression test = extremely detailed test to ensure *all* functionality is working properly
|
||
this is the most useful test for us and the one to run before any releases
|
||
Assuming it takes an hour or two at the most to run that's perfectly fine before a release as a sanity check |