    # File lib/action_controller/assertions/selector_assertions.rb, line 58
          def css_select(*args)
            # See assert_select to understand what's going on here.
            arg = args.shift

            if arg.is_a?(HTML::Node)
              root = arg
              arg = args.shift
            elsif arg == nil
              raise ArgumentError, "First argument is either selector or element to select, but nil found. Perhaps you called assert_select with an element that does not exist?"
            elsif @selected
              matches = []
              @selected.each do |selected|
                subset = css_select(selected, HTML::Selector.new(arg.dup, args.dup))
                subset.each do |match|
                  matches << match unless matches.any? { |m| m.equal?(match) }
                end
              end

              return matches
            else
              root = response_from_page_or_rjs
            end

            case arg
              when String
                selector = HTML::Selector.new(arg, args)
              when Array
                selector = HTML::Selector.new(*arg)
              when HTML::Selector
                selector = arg
              else raise ArgumentError, "Expecting a selector as the first argument"
            end

            selector.select(root)
          end