describe('Admin Flow', () => { beforeEach(() => { const token = Cypress.env('ADMIN_TOKEN') if (!token) { cy.log('ADMIN_TOKEN not set, skipping admin tests') return } cy.visit('/', { onBeforeLoad(win) { win.localStorage.setItem('oil_auth_token', token) } }) // Wait for app to load with admin privileges cy.get('.nav-tab', { timeout: 10000 }).should('have.length.gte', 6) }) it('shows admin-only tabs', () => { if (!Cypress.env('ADMIN_TOKEN')) return cy.get('.nav-tab').contains('操作日志').should('be.visible') cy.get('.nav-tab').contains('Bug').should('be.visible') cy.get('.nav-tab').contains('用户管理').should('be.visible') }) it('can access manage recipes page', () => { if (!Cypress.env('ADMIN_TOKEN')) return cy.get('.nav-tab').contains('管理配方').click() cy.url().should('include', '/manage') }) it('can access audit log page', () => { if (!Cypress.env('ADMIN_TOKEN')) return cy.get('.nav-tab').contains('操作日志').click() cy.url().should('include', '/audit') cy.contains('操作日志').should('be.visible') }) it('can access user management page', () => { if (!Cypress.env('ADMIN_TOKEN')) return cy.get('.nav-tab').contains('用户管理').click() cy.url().should('include', '/users') cy.contains('用户管理').should('be.visible') }) it('can access bug tracker page', () => { if (!Cypress.env('ADMIN_TOKEN')) return cy.get('.nav-tab').contains('Bug').click() cy.url().should('include', '/bugs') cy.contains('Bug').should('be.visible') }) })