Commit 630f97ef authored by Natalia Tepluhina's avatar Natalia Tepluhina

Merge branch '222507-step-1-editor-info-specs' into 'master'

Step 1 - Add feature specs for IDE editor info

See merge request gitlab-org/gitlab!45709
parents 69493001 a1d46a11
...@@ -29,9 +29,9 @@ export default { ...@@ -29,9 +29,9 @@ export default {
...mapGetters(['getUrlForPath']), ...mapGetters(['getUrlForPath']),
closeLabel() { closeLabel() {
if (this.fileHasChanged) { if (this.fileHasChanged) {
return sprintf(__(`%{tabname} changed`), { tabname: this.tab.name }); return sprintf(__('%{tabname} changed'), { tabname: this.tab.name });
} }
return sprintf(__(`Close %{tabname}`, { tabname: this.tab.name })); return sprintf(__('Close %{tabname}'), { tabname: this.tab.name });
}, },
showChangedIcon() { showChangedIcon() {
if (this.tab.pending) return true; if (this.tab.pending) return true;
......
---
title: Fix aria label on IDE tab close button
merge_request: 45709
author:
type: fixed
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'IDE user sees editor info', :js do
include WebIdeSpecHelpers
let_it_be(:project) { create(:project, :public, :repository) }
let_it_be(:user) { project.owner }
before do
sign_in(user)
ide_visit(project)
end
it 'shows line position' do
ide_open_file('README.md')
within find('.ide-status-bar') do
expect(page).to have_content('1:1')
end
ide_set_editor_position(4, 10)
within find('.ide-status-bar') do
expect(page).not_to have_content('1:1')
expect(page).to have_content('4:10')
end
end
it 'updates after rename' do
ide_open_file('README.md')
ide_set_editor_position(4, 10)
within find('.ide-status-bar') do
expect(page).to have_content('markdown')
expect(page).to have_content('4:10')
end
ide_rename_file('README.md', 'READMEZ.txt')
within find('.ide-status-bar') do
expect(page).to have_content('plaintext')
expect(page).to have_content('1:1')
end
end
it 'persists position' do
ide_open_file('README.md')
ide_set_editor_position(4, 10)
ide_close_file('README.md')
ide_open_file('README.md')
within find('.ide-status-bar') do
expect(page).to have_content('markdown')
expect(page).to have_content('4:10')
end
end
it 'persists viewer' do
ide_open_file('README.md')
click_link('Preview Markdown')
within find('.md-previewer') do
expect(page).to have_content('testme')
end
# Switch away from and back to the file
ide_open_file('.gitignore')
ide_open_file('README.md')
# Preview is still enabled
within find('.md-previewer') do
expect(page).to have_content('testme')
end
end
end
...@@ -100,6 +100,18 @@ describe('RepoTab', () => { ...@@ -100,6 +100,18 @@ describe('RepoTab', () => {
expect(wrapper.find('.file-modified').exists()).toBe(true); expect(wrapper.find('.file-modified').exists()).toBe(true);
}); });
it.each`
tabProps | closeLabel
${{}} | ${'Close foo.txt'}
${{ changed: true }} | ${'foo.txt changed'}
`('close button has label ($closeLabel) with tab ($tabProps)', ({ tabProps, closeLabel }) => {
const tab = { ...file('foo.txt'), ...tabProps };
createComponent({ tab });
expect(wrapper.find('button').attributes('aria-label')).toBe(closeLabel);
});
describe('locked file', () => { describe('locked file', () => {
let f; let f;
......
...@@ -22,6 +22,8 @@ module WebIdeSpecHelpers ...@@ -22,6 +22,8 @@ module WebIdeSpecHelpers
click_link('Web IDE') click_link('Web IDE')
wait_for_requests wait_for_requests
save_monaco_editor_reference
end end
def ide_tree_body def ide_tree_body
...@@ -36,8 +38,8 @@ module WebIdeSpecHelpers ...@@ -36,8 +38,8 @@ module WebIdeSpecHelpers
".js-ide-#{mode}-mode" ".js-ide-#{mode}-mode"
end end
def ide_file_row_open?(row) def ide_folder_row_open?(row)
row.matches_css?('.is-open') row.matches_css?('.folder.is-open')
end end
# Creates a file in the IDE by expanding directories # Creates a file in the IDE by expanding directories
...@@ -63,6 +65,17 @@ module WebIdeSpecHelpers ...@@ -63,6 +65,17 @@ module WebIdeSpecHelpers
ide_set_editor_value(content) ide_set_editor_value(content)
end end
def ide_rename_file(path, new_path)
container = ide_traverse_to_file(path)
click_file_action(container, 'Rename/Move')
within '#ide-new-entry' do
find('input').fill_in(with: new_path)
click_button('Rename file')
end
end
# Deletes a file by traversing to `path` # Deletes a file by traversing to `path`
# then clicking the 'Delete' action. # then clicking the 'Delete' action.
# #
...@@ -90,8 +103,22 @@ module WebIdeSpecHelpers ...@@ -90,8 +103,22 @@ module WebIdeSpecHelpers
container container
end end
def ide_close_file(name)
within page.find('.multi-file-tabs') do
click_button("Close #{name}")
end
end
def ide_open_file(path)
row = ide_traverse_to_file(path)
ide_open_file_row(row)
wait_for_requests
end
def ide_open_file_row(row) def ide_open_file_row(row)
return if ide_file_row_open?(row) return if ide_folder_row_open?(row)
row.click row.click
end end
...@@ -103,6 +130,10 @@ module WebIdeSpecHelpers ...@@ -103,6 +130,10 @@ module WebIdeSpecHelpers
execute_script("monaco.editor.getModel('#{uri}').setValue('#{escape_javascript(value)}')") execute_script("monaco.editor.getModel('#{uri}').setValue('#{escape_javascript(value)}')")
end end
def ide_set_editor_position(line, col)
execute_script("TEST_EDITOR.setPosition(#{{ lineNumber: line, column: col }.to_json})")
end
def ide_editor_value def ide_editor_value
editor = find('.monaco-editor') editor = find('.monaco-editor')
uri = editor['data-uri'] uri = editor['data-uri']
...@@ -149,4 +180,8 @@ module WebIdeSpecHelpers ...@@ -149,4 +180,8 @@ module WebIdeSpecHelpers
wait_for_requests wait_for_requests
end end
end end
def save_monaco_editor_reference
evaluate_script("monaco.editor.onDidCreateEditor(editor => { window.TEST_EDITOR = editor; })")
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment