import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class CF1365D{
    static void dfs(int i,int j,char[][] matrix,boolean[][] visited,int rows,int cols){
        if(matrix[i][j] != '#'){
            visited[i][j] = true;
        }
        else{
            return;
        }
        int x1 = i;
        int y1 = j-1;

        int x2 = i;
        int y2 = j+1;

        int x3 = i-1;
        int y3 = j;

        int x4 = i + 1;
        int y4 = j;

        if(x1 >= 1 && x1 <= rows && y1 >= 1 && y1 <= cols && matrix[x1][y1] != '#' && !visited[x1][y1]){
            visited[x1][y1] = true;
            dfs(x1,y1,matrix,visited,rows,cols);
        }
        if(x2 >= 1 && x2 <= rows && y2 >= 1 && y2 <= cols && matrix[x2][y2] != '#' && !visited[x2][y2]){
            visited[x2][y2] = true;
            dfs(x2,y2,matrix,visited,rows,cols);
        }
        if(x3 >= 1 && x3 <= rows && y3 >= 1 && y3 <= cols && matrix[x3][y3] != '#' && !visited[x3][y3]){
            visited[x3][y3] = true;
            dfs(x3,y3,matrix,visited,rows,cols);
        }
        if(x4 >= 1 && x4 <= rows && y4 >= 1 && y4 <= cols && matrix[x4][y4] != '#' && !visited[x4][y4]){
            visited[x4][y4] = true;
            dfs(x4,y4,matrix,visited,rows,cols);
        }
    }
    public static void main(String[] args){
        FastReader input = new FastReader();
        PrintWriter pw = new PrintWriter(System.out);
        // code goes here
        int t = input.nextInt();

        while (t > 0){
            int rows = input.nextInt();
            int cols = input.nextInt();

            char[][] matrix = new char[rows+1][cols+1];

            for(int i = 1;i <= rows;i++){
                String s = input.nextLine();
                for(int j = 0;j < s.length();j++){
                    matrix[i][j+1] = s.charAt(j);
                }
            }

            boolean ans = true;
            for(int i = 1;i <= rows;i++){
                for(int j = 1;j <= cols;j++){
                    if(matrix[i][j] == 'B'){
                        if(i > 1){
                            if(matrix[i-1][j] == 'G')
                                ans = false;
                            if(matrix[i-1][j] == '.'){
                                matrix[i-1][j] = '#';
                            }
                        }
                        if(i < rows){
                            if(matrix[i+1][j] == 'G')
                                ans = false;
                            if(matrix[i+1][j] == '.'){
                                matrix[i+1][j] = '#';
                            }
                        }
                        if(j > 1){
                            if(matrix[i][j-1] == 'G')
                                ans = false;
                            if(matrix[i][j-1] == '.'){
                                matrix[i][j-1] = '#';
                            }
                        }
                        if(j < cols){
                            if(matrix[i][j+1] == 'G')
                                ans = false;
                            if(matrix[i][j+1] == '.'){
                                matrix[i][j+1] = '#';
                            }
                        }
                    }
                }
            }

            boolean[][] visited = new boolean[rows+1][cols+1];

            int p = rows;
            int q = cols;

            dfs(p,q,matrix,visited,rows,cols);

            for(int i = 1;i <= rows;i++){
                for(int j = 1;j <= cols;j++){
                    if(matrix[i][j] == 'G' && !visited[i][j]){
                        ans = false;
                    }
                }
            }

            if(!ans){
                pw.println("No");
            }
            else{
                pw.println("Yes");
            }

            t--;
        }



        pw.flush();
        pw.close();
    }
    static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;

        public FastReader()
        {
            br = new BufferedReader(new
                    InputStreamReader(System.in));
        }

        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }

        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }

}